亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統(tǒng) > Android > 正文

android ListView深入理解

2020-04-11 12:41:14
字體:
供稿:網(wǎng)友

  在android開發(fā)中ListView是比較常用的組件,它以列表的形式展示具體內(nèi)容,并且能夠根據(jù)數(shù)據(jù)的長度自適應(yīng)顯示。抽空把對ListView的使用做了整理,并寫了個小例子,如下圖。

 列表的顯示需要三個元素:

1.ListVeiw 用來展示列表的View。

2.適配器 用來把數(shù)據(jù)映射到ListView上的中介。

3.數(shù)據(jù)    具體的將被映射的字符串,圖片,或者基本組件。

根據(jù)列表的適配器類型,列表分為三種,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter

其中以ArrayAdapter最為簡單,只能展示一行字。SimpleAdapter有最好的擴充性,可以自定義出各種效果。SimpleCursorAdapter可以認為是SimpleAdapter對數(shù)據(jù)庫的簡單結(jié)合,可以方面的把數(shù)據(jù)庫的內(nèi)容以列表的形式展示出來。

 我們從最簡單的ListView開始:

復(fù)制代碼 代碼如下:

/**
* @author allin
*
*/
public class MyListView extends Activity {

private ListView listView;
//private List<String> data = new ArrayList<String>();
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);

listView = new ListView(this);
listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,getData()));
setContentView(listView);
}



private List<String> getData(){

List<String> data = new ArrayList<String>();
data.add("測試數(shù)據(jù)1");
data.add("測試數(shù)據(jù)2");
data.add("測試數(shù)據(jù)3");
data.add("測試數(shù)據(jù)4");

return data;
}
}

上面代碼使用了ArrayAdapter(Context context, int textViewResourceId, List<T> objects)來裝配數(shù)據(jù),要裝配這些數(shù)據(jù)就需要一個連接ListView視圖對象和數(shù)組數(shù)據(jù)的適配器來兩者的適配工作,ArrayAdapter的構(gòu)造需要三個參數(shù),依次為this,布局文件(注意這里的布局文件描述的是列表的每一行的布局,android.R.layout.simple_list_item_1是系統(tǒng)定義好的布局文件只顯示一行文字,數(shù)據(jù)源(一個List集合)。同時用setAdapter()完成適配的最后工作。運行后的現(xiàn)實結(jié)構(gòu)如下圖:

SimpleCursorAdapter

  sdk的解釋是這樣的:An easy adapter to map columns from a cursor to TextViews or ImageViews defined in an XML file. You can specify which columns you want, which views you want to display the columns, and the XML file that defines the appearance of these views。簡單的說就是方便把從游標得到的數(shù)據(jù)進行列表顯示,并可以把指定的列映射到對應(yīng)的TextView中。

  下面的程序是從電話簿中把聯(lián)系人顯示到類表中。先在通訊錄中添加一個聯(lián)系人作為數(shù)據(jù)庫的數(shù)據(jù)。然后獲得一個指向數(shù)據(jù)庫的Cursor并且定義一個布局文件(當然也可以使用系統(tǒng)自帶的)。

/** * @author allin * */public class MyListView2 extends Activity {private ListView listView;//private List<String> data = new ArrayList<String>();@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);listView = new ListView(this);Cursor cursor = getContentResolver().query(People.CONTENT_URI, null, null, null, null);startManagingCursor(cursor);ListAdapter listAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_expandable_list_item_1, cursor,new String[]{People.NAME}, new int[]{android.R.id.text1});listView.setAdapter(listAdapter);setContentView(listView);}}

 Cursor cursor = getContentResolver().query(People.CONTENT_URI, null, null, null, null);先獲得一個指向系統(tǒng)通訊錄數(shù)據(jù)庫的Cursor對象獲得數(shù)據(jù)來源。

 startManagingCursor(cursor);我們將獲得的Cursor對象交由Activity管理,這樣Cursor的生命周期和Activity便能夠自動同步,省去自己手動管理Cursor。

 SimpleCursorAdapter 構(gòu)造函數(shù)前面3個參數(shù)和ArrayAdapter是一樣的,最后兩個參數(shù):一個包含數(shù)據(jù)庫的列的String型數(shù)組,一個包含布局文件中對應(yīng)組件id的int型數(shù)組。其作用是自動的將String型數(shù)組所表示的每一列數(shù)據(jù)映射到布局文件對應(yīng)id的組件上。上面的代碼,將NAME列的數(shù)據(jù)一次映射到布局文件的id為text1的組件上。

注意:需要在AndroidManifest.xml中如權(quán)限:<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>

運行后效果如下圖:

SimpleAdapter

simpleAdapter的擴展性最好,可以定義各種各樣的布局出來,可以放上ImageView(圖片),還可以放上Button(按鈕),CheckBox(復(fù)選框)等等。下面的代碼都直接繼承了ListActivity,ListActivity和普通的Activity沒有太大的差別,不同就是對顯示ListView做了許多優(yōu)化,方面顯示而已。

下面的程序是實現(xiàn)一個帶有圖片的類表。

首先需要定義好一個用來顯示每一個列內(nèi)容的xml

vlist.xml

復(fù)制代碼 代碼如下:

/**
* @author allin
*
*/
public class MyListView2 extends Activity {

private ListView listView;
//private List<String> data = new ArrayList<String>();
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);

listView = new ListView(this);

Cursor cursor = getContentResolver().query(People.CONTENT_URI, null, null, null, null);
startManagingCursor(cursor);

ListAdapter listAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_expandable_list_item_1,
cursor,
new String[]{People.NAME},
new int[]{android.R.id.text1});

listView.setAdapter(listAdapter);
setContentView(listView);
}


}

下面是實現(xiàn)代碼:

復(fù)制代碼 代碼如下:

/**
* @author allin
*
*/
public class MyListView3 extends ListActivity {


// private List<String> data = new ArrayList<String>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

SimpleAdapter adapter = new SimpleAdapter(this,getData(),R.layout.vlist,
new String[]{"title","info","img"},
new int[]{R.id.title,R.id.info,R.id.img});
setListAdapter(adapter);
}

private List<Map<String, Object>> getData() {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();

Map<String, Object> map = new HashMap<String, Object>();
map.put("title", "G1");
map.put("info", "google 1");
map.put("img", R.drawable.i1);
list.add(map);

map = new HashMap<String, Object>();
map.put("title", "G2");
map.put("info", "google 2");
map.put("img", R.drawable.i2);
list.add(map);

map = new HashMap<String, Object>();
map.put("title", "G3");
map.put("info", "google 3");
map.put("img", R.drawable.i3);
list.add(map);

return list;
}
}

使用simpleAdapter的數(shù)據(jù)用一般都是HashMap構(gòu)成的List,list的每一節(jié)對應(yīng)ListView的每一行。HashMap的每個鍵值數(shù)據(jù)映射到布局文件中對應(yīng)id的組件上。因為系統(tǒng)沒有對應(yīng)的布局文件可用,我們可以自己定義一個布局vlist.xml。下面做適配,new一個SimpleAdapter參數(shù)一次是:this,布局文件(vlist.xml),HashMap的 title 和 info,img。布局文件的組件id,title,info,img。布局文件的各組件分別映射到HashMap的各元素上,完成適配。

運行效果如下圖:

有按鈕的ListView

但是有時候,列表不光會用來做顯示用,我們同樣可以在在上面添加按鈕。添加按鈕首先要寫一個有按鈕的xml文件,然后自然會想到用上面的方法定義一個適配器,然后將數(shù)據(jù)映射到布局文件上。但是事實并非這樣,因為按鈕是無法映射的,即使你成功的用布局文件顯示出了按鈕也無法添加按鈕的響應(yīng),這時就要研究一下ListView是如何現(xiàn)實的了,而且必須要重寫一個類繼承BaseAdapter。下面的示例將顯示一個按鈕和一個圖片,兩行字如果單擊按鈕將刪除此按鈕的所在行。并告訴你ListView究竟是如何工作的。效果如下:

vlist2.xml

復(fù)制代碼 代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">


<ImageView android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5px"/>

<LinearLayout android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">

<TextView android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FFFFFFFF"
android:textSize="22px" />
<TextView android:id="@+id/info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FFFFFFFF"
android:textSize="13px" />

</LinearLayout>


<Button android:id="@+id/view_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/s_view_btn"
android:layout_gravity="bottom|right" />
</LinearLayout>

程序代碼:

復(fù)制代碼 代碼如下:

/**
* @author allin
*
*/
public class MyListView4 extends ListActivity {
private List<Map<String, Object>> mData;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mData = getData();
MyAdapter adapter = new MyAdapter(this);
setListAdapter(adapter);
}
private List<Map<String, Object>> getData() {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> map = new HashMap<String, Object>();
map.put("title", "G1");
map.put("info", "google 1");
map.put("img", R.drawable.i1);
list.add(map);
map = new HashMap<String, Object>();
map.put("title", "G2");
map.put("info", "google 2");
map.put("img", R.drawable.i2);
list.add(map);
map = new HashMap<String, Object>();
map.put("title", "G3");
map.put("info", "google 3");
map.put("img", R.drawable.i3);
list.add(map);
return list;
}
// ListView 中某項被選中后的邏輯
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
Log.v("MyListView4-click", (String)mData.get(position).get("title"));
}
/**
* listview中點擊按鍵彈出對話框
*/
public void showInfo(){
new AlertDialog.Builder(this)
.setTitle("我的listview")
.setMessage("介紹...")
.setPositiveButton("確定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.show();
}
public final class ViewHolder{
public ImageView img;
public TextView title;
public TextView info;
public Button viewBtn;
}
public class MyAdapter extends BaseAdapter{
private LayoutInflater mInflater;
public MyAdapter(Context context){
this.mInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mData.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
holder=new ViewHolder();
convertView = mInflater.inflate(R.layout.vlist2, null);
holder.img = (ImageView)convertView.findViewById(R.id.img);
holder.title = (TextView)convertView.findViewById(R.id.title);
holder.info = (TextView)convertView.findViewById(R.id.info);
holder.viewBtn = (Button)convertView.findViewById(R.id.view_btn);
convertView.setTag(holder);
}else {
holder = (ViewHolder)convertView.getTag();
}
holder.img.setBackgroundResource((Integer)mData.get(position).get("img"));
holder.title.setText((String)mData.get(position).get("title"));
holder.info.setText((String)mData.get(position).get("info"));
holder.viewBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showInfo();
}
});
return convertView;
}
}
}

  下面將對上述代碼,做詳細的解釋,listView在開始繪制的時候,系統(tǒng)首先調(diào)用getCount()函數(shù),根據(jù)他的返回值得到listView的長度(這也是為什么在開始的第一張圖特別的標出列表長度),然后根據(jù)這個長度,調(diào)用getView()逐一繪制每一行。如果你的getCount()返回值是0的話,列表將不顯示同樣return 1,就只顯示一行。

  系統(tǒng)顯示列表時,首先實例化一個適配器(這里將實例化自定義的適配器)。當手動完成適配時,必須手動映射數(shù)據(jù),這需要重寫getView()方法。系統(tǒng)在繪制列表的每一行的時候?qū)⒄{(diào)用此方法。getView()有三個參數(shù),position表示將顯示的是第幾行,covertView是從布局文件中inflate來的布局。我們用LayoutInflater的方法將定義好的vlist2.xml文件提取成View實例用來顯示。然后將xml文件中的各個組件實例化(簡單的findViewById()方法)。這樣便可以將數(shù)據(jù)對應(yīng)到各個組件上了。但是按鈕為了響應(yīng)點擊事件,需要為它添加點擊監(jiān)聽器,這樣就能捕獲點擊事件。至此一個自定義的listView就完成了,現(xiàn)在讓我們回過頭從新審視這個過程。系統(tǒng)要繪制ListView了,他首先獲得要繪制的這個列表的長度,然后開始繪制第一行,怎么繪制呢?調(diào)用getView()函數(shù)。在這個函數(shù)里面首先獲得一個View(實際上是一個ViewGroup),然后再實例并設(shè)置各個組件,顯示之。好了,繪制完這一行了。那再繪制下一行,直到繪完為止。在實際的運行過程中會發(fā)現(xiàn)listView的每一行沒有焦點了,這是因為Button搶奪了listView的焦點,只要布局文件中將Button設(shè)置為沒有焦點就OK了。

運行效果如下圖:

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
91精品国产高清一区二区三区蜜臀| 精品欧美日韩精品| 艳女tv在线观看国产一区| 日韩黄色碟片| 国产欧美视频在线观看| 九色国产视频| 精品黄色免费中文电影在线播放| 特级西西人体4444xxxx| 国产成人精品一区二区| 天堂av手机在线| 日本性视频网站| 免费在线性爱视频| 美女大黄三级视频在线观看| 毛片av免费在线观看| 国产精品久久一区| 先锋在线亚洲| 欧美色倩网站大全免费| 国产高清不卡视频| 亚洲一级片免费| 中文字幕伦av一区二区邻居| 成人av资源网站| 成人午夜视频在线观看免费| 亚洲永久免费网站| 中文字幕欧美激情极品| 亚洲免费在线观看| 中文天堂在线观看| 久久久久久亚洲精品美女| 亚洲区精品久久一区二区三区| 高清在线一区二区| 国产黄色免费电影| 九九热线视频只有这里最精品| 日韩精品影院| 中文字幕亚洲一区二区av在线| 欧美精品免费在线| 亚洲欧洲国产日韩精品| 国产一区二区视频免费在线观看| 男人的天堂va在线| 亚洲一区电影| 国产精品亚洲不卡a| 天堂99x99es久久精品免费| 国产美女在线观看一区| 中文字幕第69页| 最新黄色片网站| 亚洲天堂伊人网| 精品少妇在线视频| 国产欧美中文字幕| 综合国产精品久久久| 久久免费视频观看| 丰腴饱满的极品熟妇| 国产不卡一区二区在线播放| 国产小视频精品| 美女av一区二区| 免费h片在线| 亚洲人成网站在线在线观看| 中文乱码字幕高清在线观看| 天天躁日日躁aaaxxⅹ| 欧美日韩在线视频一区二区三区| 国产精品成人网| 亚洲成人福利在线| 中文字幕一区二区三区最新| 亚洲精品久久久久中文字幕欢迎你| 奇米影视第四色7777| 一区二区视频在线观看| 国内精品伊人久久久久影院对白| 国产美女视频免费观看下载软件| 欧美日韩国产中文字幕在线| 亚洲天堂av在线免费观看| 亚洲精品中文字| 国精一区二区| 日韩av免费在线| 在线观看免费av片| 视频在线观看一区| 欧美在线一区二区| 国产麻豆xxxvideo实拍| 成人亚洲网站| 色成年激情久久综合| 日韩精品在线不卡| 91在线视频国产| 久久久久国产美女免费网站| 成人永久看片免费视频天堂| 视频一区二区国产| 欧美精品大片| 8888在线观看免费www| 久久黄色级2电影| 久久只有精品| 亚洲国产天堂网精品网站| 99久久综合网| 国产suv一区二区| 日韩视频在线观看国产| 黄色免费大全亚洲| 欧美日韩在线观看一区| 免费无遮挡无码永久在线观看视频| 亚洲精品乱码久久久久久蜜桃91| 日产日韩在线亚洲欧美| 欧美高清性xxxxhd| 男女啪啪在线观看| 天堂www在线а√天堂| 日韩高清av在线| 中文字幕乱码久久午夜不卡| 欧美 日本 国产| 国产精品高清亚洲| 国产精品九色蝌蚪自拍| 亚洲激情一二三区| 一区二区在线视频播放| 人妖粗暴刺激videos呻吟| 国产精品111| 亚洲资源在线看| 日韩视频中文| 亚洲xxxx天美| 中文在线天堂网www| 91免费高清视频| 国产一区二区三区不卡免费观看| 日本视频一二区| 亚洲精品中文在线| 波多野结衣av在线观看| www天堂在线观看| 日韩美女爱爱视频| 亚洲二区在线播放视频| 免费一级欧美片在线观看网站| 美女黄页在线观看| 欧美日韩五区| 青草青草久热精品视频在线观看| 国产精品一二三区视频| 巨大荫蒂视频欧美大片| 亚洲高清视频在线| 国产福利电影在线播放| 亚洲经典中文字幕| 日韩在线观看电影完整版高清免费悬疑悬疑| 国内精品二区| 日日摸夜夜添夜夜添精品视频| 久久国产精品网站| 黄污在线观看| 精品国产麻豆免费人成网站| 久久久影院一区二区三区| 天堂av在线8| 91精品一区二区三区综合在线爱| 欧美中文在线| 视频小说一区二区| 免费黄色网址在线观看| 水莓100在线视频| 乱人伦视频在线| 精品国产一区二区三区2021| 香港三日本三级少妇66| 91在线小视频| 亚洲免费激情视频| 欧美专区一区二区三区| 三级黄色免费观看| 可以免费在线看黄的网站| 久久er精品视频| 成年人av网站| 欧美激情视频一区| 日本一区精品视频| 99国产精品免费| 无码人妻精品一区二区三区9厂| 天天爽天天爽夜夜爽| 五月婷婷综合久久| 国产私拍一区| 国产精品2024| 欧美舌奴丨vk视频| 伊人伊成久久人综合网站| 亚洲人成人一区二区在线观看| 亚洲欧洲成人在线| 亚洲精品国产a久久久久久| 国产伦精品一区二区三区视频| 日本一区二区免费在线观看视频| 国语产色综合| 久久噜噜噜精品国产亚洲综合| 亚洲视频第一页| 国产va免费精品高清在线观看| 亚洲一区二区四区| 538任你躁精品视频网免费| 久久久久久97| 欧美a∨亚洲欧美亚洲| 欧美精品videossex性护士| 亚洲老妇色熟女老太| 激情文学综合插| 国产老妇伦国产熟女老妇视频| 天海翼中文字幕| 高清国语自产拍免费一区二区三区| 欧美久久在线观看| 国产一区二区三区免费在线| 成人av中文字幕| 国产一区二区三区在线观看免费视频| 国产精品久久二区二区| 中文字幕丰满乱子伦无码专区| 日韩精品一级| 久久爱另类一区二区小说| 国产一级大片在线观看| 久久69精品久久久久久国产越南| 欧产日产国产v| 久久精品国产亚洲精品2020| 男人和女人啪啪网站| japanese国产在线观看| 亚洲综合一二三| 最近中文字幕mv免费高清视频8| 精品欧美一区免费观看α√| h1515四虎成人| 亚洲精品国产精品乱码不99按摩| 啊v视频在线一区二区三区| wwwwxxxxx欧美| 中文乱码字幕午夜无线观看| 日本三级中文字幕| 免费xxxxx网站中文字幕| 先锋影音成人资源| 女人抽搐喷水高潮国产精品| 色噜噜狠狠狠综合曰曰曰88av| 精品三级久久久久久久电影聊斋| 亚洲视频你懂的| 少妇高潮在线观看| 亚洲综合伊人久久| 午夜久久tv| 大白屁股一区二区视频| 91香蕉国产视频| 三级影片在线观看欧美日韩一区二区| 日本欧洲一区二区| 久久av电影| 中文字幕日韩高清| 亚洲国产成人精品一区二区三区| 国产大学生av| 波多野结衣一二三区| 99视频在线免费播放| 国产精品自产拍在线网站| fpee性欧美| 欧美多人猛交狂配| √天堂资源中文www| 55夜色66夜色国产精品视频| 三上悠亚在线一区二区| 成人亚洲精品777777ww| 日韩精品一区二区三区中文| 久久亚洲精品毛片| 一二三av在线| 亚洲精品网址| 精品国产第一区二区三区观看体验| 六十路息与子猛烈交尾| 国产黑丝在线一区二区三区| 中文字幕av在线播放| 波多野结衣高清在线| 国产精品va无码一区二区三区| 国产男人搡女人免费视频| 7777精品| 久久久欧美一区二区| 亚洲日本一区二区| 91麻豆精品国产综合久久久久久| 亚洲国产精品影院| 在线免费观看日本一区| 羞羞视频在线观看免费| 992tv成人免费影院| 欧美亚洲国产另类| 香港成人在线视频| 黄色大全在线观看| www.亚洲一区二区三区| 亚洲第一网中文字幕| 日韩精品影片| 精品卡一卡二卡三卡四在线| 欧美精品少妇| 亚洲香蕉伊在人在线观| 97影院秋霞午夜在线观看| av免费播放网站| 欧美日韩中国免费专区在线看| 日本精品视频网站| 亚洲一区在线不卡| 久久久一本精品99久久精品66| 国产在线一级片| 午夜久久资源| 色狠狠色狠狠综合| 色综合咪咪久久网| 亚洲女人天堂a在线播放| 97国产精品免费视频| 国产中文欧美日韩在线| 免费观看美女裸体网站| 在线亚洲电影| 国产日本欧美在线| 久久精品这里热有精品| 亚洲国产精品系列| 玖玖综合伊人| 丰满少妇xbxb毛片日本| 亚洲一区电影| 黄色免费一级视频| 91麻豆精品国产91久久久使用方法| 最新日韩免费视频| 黄网站色欧美视频| 五月天精品一区二区三区| 国产精品久久久久久妇女6080| 欧美成人综合色| 精品在线91| 天堂中文av| 中文字幕在线日韩| 久久国产一区二区| 夜夜躁很很躁日日躁麻豆| 精品人妻少妇嫩草av无码专区| 婷婷激情小说网| 欧美经典影片视频网站| 亚洲精品成人| 国产一级二级三级视频| 91美女精品福利| 波多野结衣一区二区三区| www日韩av| 亚洲精品3区| www.激情成人| 欧美激情在线视频二区| 久久视频免费在线播放| 国产在线乱码一区二区三区| 亚洲免费福利视频| 成人sese在线| 日本一二三不卡| 一本高清dvd不卡在线观看| 欧美 日韩 国产一区二区在线视频| 亚洲一区 视频| 欧美二区三区的天堂| 一区二区三区波多野结衣在线观看| 美女福利视频一区二区| 任我爽在线视频| 久久青青色综合| 免费中国女人69xxxxx视频| 国产乱淫av片杨贵妃| 最新中文字幕在线观看视频| 美女免费黄视频网站| 国产精品久久久免费视频| 婷婷亚洲成人| 国产农村妇女毛片精品久久| 久久国产精品电影| 91免费看片在线| 综合天天久久| 中文字幕亚洲欧美一区二区三区| 影音先锋亚洲天堂| 亚洲第一中文字幕| 黑丝一区二区三区| 国产一区二区网站|