精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Android ListView詳解

移動開發 Android
在Android開發中ListView是比較常用的組件,它以列表的形式展示具體內容,并且能夠根據數據的長度自適應顯示。實例如下。

在Android開發中ListView是比較常用的組件,它以列表的形式展示具體內容,并且能夠根據數據的長度自適應顯示。抽空把對ListView的使用做了整理,并寫了個小例子,圖示。

 列表的顯示需要三個元素

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

2.適配器 用來把數據映射到ListView上的中介。

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

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

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

 我們從最簡單的ListView開始:

  1. view sourceprint?01 /**    
  2.   * @author allin    
  3.   **/   
  4. 05 public class MyListView extends Activity {       
  5.      private ListView listView;    
  6.      //private List<String> data = new ArrayList<String>();    
  7.     @Override   
  8.      public void onCreate(Bundle savedInstanceState){    
  9.          super.onCreate(savedInstanceState);    
  10.         listView = new ListView(this);    
  11.          listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,  
  12. getData()));    
  13.  
  14.          setContentView(listView);    
  15.     }    
  16.      private List<String> getData(){               
  17.          List<String> data = new ArrayList<String>();    
  18.         data.add("測試數據1");    
  19.          data.add("測試數據2");    
  20.         data.add("測試數據3");    
  21.          data.add("測試數據4");    
  22.          return data;    
  23.      }    
  24.  }   

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

 

#p#

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。簡單的說就是方便把從游標得到的數據進行列表顯示,并可以把指定的列映射到對應的TextView中。

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

  1. view sourceprint?01 /**    
  2.   * @author allin    
  3.   **/   
  4.   public class MyListView2 extends Activity {      
  5.     private ListView listView;    
  6.      //private List<String> data = new ArrayList<String>();    
  7.      @Override   
  8.      public void onCreate(Bundle savedInstanceState){    
  9.         super.onCreate(savedInstanceState);             
  10.         listView = new ListView(this);    
  11.         Cursor cursor = getContentResolver().query(People.CONTENT_URI, null, null, null, null);    
  12.          startManagingCursor(cursor);    
  13.          ListAdapter listAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_expandable_list_item_1,     
  14.                  cursor,    
  15.                  new String[]{People.NAME},     
  16.                new int[]{android.R.id.text1});               
  17.          listView.setAdapter(listAdapter);    
  18.          setContentView(listView);    
  19.      }     
  20.  }  

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

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

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

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

運行后效果如下圖:

SimpleAdapter

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

下面的程序是實現一個帶有圖片的類表。

首先需要定義好一個用來顯示每一個列內容的xml

#p#

vlist.xml

view sourceprint?01

  1. <?xml version="1.0" encoding="utf-8"?>    
  2.  
  3.  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"   
  4.  
  5.     android:orientation="horizontal" android:layout_width="fill_parent"   
  6.  
  7.     android:layout_height="fill_parent">    
  8.  
  9.      
  10.  
  11.       
  12.     <ImageView android:id="@+id/img"    
  13.  
  14.        android:layout_width="wrap_content"   
  15.  
  16.          android:layout_height="wrap_content"    
  17.  
  18.          android:layout_margin="5px"/>    
  19.  
  20.       
  21.     <LinearLayout android:orientation="vertical"   
  22.          android:layout_width="wrap_content"    
  23.  
  24.          android:layout_height="wrap_content">    
  25.      
  26.         <TextView android:id="@+id/title"    
  27.            android:layout_width="wrap_content"   
  28.  
  29.             android:layout_height="wrap_content"    
  30.  
  31.              android:textColor="#FFFFFFFF"   
  32.  
  33.              android:textSize="22px" />    
  34.          <TextView android:id="@+id/info"    
  35.              android:layout_width="wrap_content"   
  36.             android:layout_height="wrap_content"    
  37.  
  38.              android:textColor="#FFFFFFFF"   
  39.  
  40.              android:textSize="13px" />       
  41.  
  42.      </LinearLayout>    
  43.  
  44.  </LinearLayout>   
  45.  
  46. 下面是實現代碼:  
  47. view sourceprint?01 /**    
  48.   * @author allin    
  49.  **/   
  50.  public class MyListView3 extends ListActivity {    
  51.     // private List<String> data = new ArrayList<String>();    
  52.     @Override   
  53.      public void onCreate(Bundle savedInstanceState) {    
  54.         super.onCreate(savedInstanceState);       
  55.          SimpleAdapter adapter = new SimpleAdapter(this,getData(),R.layout.vlist,    
  56.                 new String[]{"title","info","img"},    
  57.                 new int[]{R.id.title,R.id.info,R.id.img});    
  58.          setListAdapter(adapter);    
  59.     }    
  60.     private List<Map<String, Object>> getData() {    
  61.         List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();        
  62.          Map<String, Object> map = new HashMap<String, Object>();    
  63.         map.put("title", "G1");    
  64.         map.put("info", "google 1");    
  65.         map.put("img", R.drawable.i1);    
  66.         list.add(map);     
  67.         map = new HashMap<String, Object>();    
  68.         map.put("title", "G2");    
  69.         map.put("info", "google 2");    
  70.         map.put("img", R.drawable.i2);    
  71.         list.add(map);    
  72.         map = new HashMap<String, Object>();    
  73.         map.put("title", "G3");    
  74.         map.put("info", "google 3");    
  75.         map.put("img", R.drawable.i3);    
  76.         list.add(map);    
  77.       return list;    
  78.      }    
  79.  }  

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

運行效果如下圖:

 

#p#

有按鈕的ListView

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

vlist2.xml

view sourceprint?01

  1. <?xml version="1.0" encoding="utf-8"?>    
  2.  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android  
  3.     android:orientation="horizontal"    
  4.     android:layout_width="fill_parent"   
  5.      android:layout_height="fill_parent">     
  6.      <ImageView android:id="@+id/img"    
  7.          android:layout_width="wrap_content"   
  8.          android:layout_height="wrap_content"    
  9.          android:layout_margin="5px"/>      
  10.     <LinearLayout android:orientation="vertical"   
  11.         android:layout_width="wrap_content"    
  12.         android:layout_height="wrap_content">    
  13.          <TextView android:id="@+id/title"    
  14.            android:layout_width="wrap_content"   
  15.             android:layout_height="wrap_content"    
  16.             android:textColor="#FFFFFFFF"   
  17.              android:textSize="22px" />    
  18.         <TextView android:id="@+id/info"    
  19.              android:layout_width="wrap_content"   
  20.              android:layout_height="wrap_content"    
  21.              android:textColor="#FFFFFFFF"   
  22.             android:textSize="13px" />    
  23.      </LinearLayout>    
  24.      <Button android:id="@+id/view_btn"   
  25.        android:layout_width="wrap_content"   
  26.          android:layout_height="wrap_content"   
  27.         android:text="@string/s_view_btn"   
  28.          android:layout_gravity="bottom|right" />    
  29. </LinearLayout>   
  30. 程序代碼:  
  31. view sourceprint?001 /**    
  32.   * @author allin    
  33. **/   
  34.  public class MyListView4 extends ListActivity {    
  35.      private List<Map<String, Object>> mData;    
  36.    @Override   
  37.     public void onCreate(Bundle savedInstanceState) {    
  38.         super.onCreate(savedInstanceState);    
  39.          mData = getData();    
  40.         MyAdapter adapter = new MyAdapter(this);    
  41.          setListAdapter(adapter);    
  42.     }    
  43.      private List<Map<String, Object>> getData() {    
  44.         List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();        
  45.          Map<String, Object> map = new HashMap<String, Object>();    
  46.         map.put("title", "G1");    
  47.          map.put("info", "google 1");    
  48.          map.put("img", R.drawable.i1);    
  49.          list.add(map);    
  50.          map = new HashMap<String, Object>();    
  51.          map.put("title", "G2");    
  52.         map.put("info", "google 2");    
  53.          map.put("img", R.drawable.i2);    
  54.         list.add(map);    
  55.         map = new HashMap<String, Object>();    
  56.         map.put("title", "G3");    
  57.         map.put("info", "google 3");    
  58.          map.put("img", R.drawable.i3);    
  59.          list.add(map);    
  60.         return list;    
  61.      }   
  62.     // ListView 中某項被選中后的邏輯    
  63.     @Override   
  64.     protected void onListItemClick(ListView l, View v, int position, long id) {    
  65.          Log.v("MyListView4-click", (String)mData.get(position).get("title"));    
  66.     }         
  67.      /**    
  68.       * listview中點擊按鍵彈出對話框    
  69.      */   
  70.      public void showInfo(){    
  71.         new AlertDialog.Builder(this)    
  72.         .setTitle("我的listview")    
  73.         .setMessage("介紹...")    
  74.          .setPositiveButton("確定", new DialogInterface.OnClickListener() {    
  75.             @Override   
  76.            public void onClick(DialogInterface dialog, int which) {    
  77.            }    
  78.        })    
  79.         .show();    
  80.      }    
  81.      public final class ViewHolder{    
  82.        public ImageView img;    
  83.          public TextView title;    
  84.          public TextView info;    
  85.         public Button viewBtn;    
  86.     }    
  87.    public class MyAdapter extends BaseAdapter{    
  88.        private LayoutInflater mInflater;    
  89.          public MyAdapter(Context context){    
  90.              this.mInflater = LayoutInflater.from(context);    
  91.        }           
  92.         @Override   
  93.          public int getCount() {    
  94.              // TODO Auto-generated method stub    
  95.              return mData.size();    
  96.          }      
  97.          @Override   
  98.          public Object getItem(int arg0) {    
  99.              // TODO Auto-generated method stub    
  100.              return null;    
  101.          }    
  102.          @Override   
  103.         public long getItemId(int arg0) {    
  104.              // TODO Auto-generated method stub    
  105.             return 0;    
  106.          }    
  107.          @Override   
  108.          public View getView(int position, View convertView, ViewGroup parent) {                    
  109.              ViewHolder holder = null;    
  110.              if (convertView == null) {    
  111.                 holder=new ViewHolder();      
  112.                  convertView = mInflater.inflate(R.layout.vlist2, null);    
  113.                  holder.img = (ImageView)convertView.findViewById(R.id.img);    
  114.                  holder.title = (TextView)convertView.findViewById(R.id.title);    
  115.                 holder.info = (TextView)convertView.findViewById(R.id.info);    
  116.                  holder.viewBtn = (Button)convertView.findViewById(R.id.view_btn);    
  117.                  convertView.setTag(holder);     
  118.             }else {    
  119.              holder = (ViewHolder)convertView.getTag();    
  120.                   }     
  121.              holder.img.setBackgroundResource((Integer)mData.get(position).get("img"));    
  122.              holder.title.setText((String)mData.get(position).get("title"));    
  123.              holder.info.setText((String)mData.get(position).get("info"));       
  124.             holder.viewBtn.setOnClickListener(new View.OnClickListener() {                        
  125.                  @Override   
  126.                  public void onClick(View v) {    
  127.                  showInfo();                     
  128.                  }    
  129.             });    
  130.              return convertView;    
  131.         }    
  132.     }    
  133.  }  

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

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

運行效果如下圖:

【編輯推薦】

深入理解Android消息處理系統原理

開發者對Android Market改進的三大建議

Android開發:自定義GridView/ListView數據源

責任編輯:zhaolei 來源: 博客園
相關推薦

2013-03-27 09:17:17

Android開發AndroidList

2011-06-03 10:48:23

Android ListView

2014-12-17 09:46:30

AndroidListView最佳實踐

2013-07-10 10:21:22

Android Lis

2017-11-08 14:34:20

圖片fresco程序員

2011-10-19 10:08:01

AndroidListView

2015-10-22 10:59:13

ListViewItem刷新

2010-01-25 17:53:35

Android Lis

2011-04-11 13:43:35

popupwindowlistviewAndroid

2014-09-17 11:20:38

AndroidListView技巧

2010-09-10 10:09:26

Android

2013-08-07 10:35:02

AndroidListView拖拽

2013-08-07 10:47:58

Android特效ListView

2011-04-11 14:14:29

checkboxlistviewAndroid

2013-09-17 14:00:19

AndroidListView原理

2014-07-28 10:09:30

Android

2013-11-14 10:42:48

MTPAndroid

2014-07-24 09:11:34

2017-01-11 19:05:45

AndroidAndroid Loa詳解

2013-11-14 16:50:08

點贊
收藏

51CTO技術棧公眾號

欧美激情视频一区二区三区不卡| 91成人在线精品| 91精品天堂| 国产性猛交xx乱| 91p九色成人| 国产精品国产馆在线真实露脸| 成人国产精品一区| 可以直接看的黄色网址| 成人网av.com/| 亚洲一区二区三区国产| 亚洲一区亚洲二区| 日韩精品一区三区| 成人区精品一区二区婷婷| 69堂精品视频| 男人添女荫道口图片| 日本护士...精品国| 毛片av中文字幕一区二区| 久久综合亚洲社区| 亚洲欧洲在线观看| 亚洲一区二区在线观| 国产色片在线观看| 亚洲在线电影| 伊人伊成久久人综合网小说 | 国产尤物精品| 国产视频精品va久久久久久| 91av视频免费观看| 国产777精品精品热热热一区二区| 国产三级三级三级精品8ⅰ区| 国产精品mp4| 久久久久久久久久一区二区三区 | 日韩欧美三级电影| 国产男男gay体育生白袜| 香蕉久久夜色精品| 欧美多人乱p欧美4p久久| 国产高潮呻吟久久| 白白在线精品| 欧美亚洲综合另类| 黄页免费在线观看视频| 调教视频免费在线观看| 91丝袜国产在线播放| 亚洲资源在线看| 九九热最新视频| 国产精品最新自拍| 久久久久久久久久av| 美国黄色片视频| 亚洲尤物av| 亚洲风情亚aⅴ在线发布| 爱爱爱爱免费视频| 色是在线视频| 亚洲一区二区三区四区的| 亚洲啪啪av| 毛片免费在线播放| 92精品国产成人观看免费| 亚洲最大成人在线| 在线播放国产一区| 日韩激情视频在线观看| 欧美一区二区.| 精品无码久久久久久久| 欧美在线网址| 精品自拍视频在线观看| 搜索黄色一级片| 久久香蕉国产| 亚洲欧美日韩精品久久| 国产精品无码毛片| 精品人人人人| 日韩av有码在线| 亚洲中文字幕一区| 久久成人福利| 亚洲黄在线观看| 污污免费在线观看| 国产精东传媒成人av电影| 日韩欧美国产综合一区| 在线不卡一区二区三区| 伊人久久一区| 欧美一级爆毛片| 九色91porny| 奇米777日韩| 91精品办公室少妇高潮对白| 午夜剧场在线免费观看| 136福利精品导航| 日韩精品高清在线| 亚洲色图欧美色| 欧美一区二区三区另类| 性色av一区二区咪爱| 亚洲av无码精品一区二区| 久久99国内精品| 国产伦精品一区二区三区在线| 深夜福利免费在线观看| 国产精品久久久久久久久晋中 | 麻豆传媒视频在线| 亚洲国产综合91精品麻豆| 麻豆av免费在线| 国产区一区二| 亚洲男人天天操| 老女人性淫交视频| 日韩成人午夜电影| 国产精品嫩草在线观看| 岛国在线视频| 亚洲一本大道在线| 亚洲一级片网站| 另类ts人妖一区二区三区| 日日噜噜噜夜夜爽亚洲精品 | 日韩精品色哟哟| 亚洲永久免费观看| 精品福利视频导航大全| 亚洲尤物视频在线| 国产一区二区在线免费播放| 日韩免费一级| 最近2019免费中文字幕视频三| 久热精品在线观看| 精品一区二区免费视频| 欧美激情论坛| 17videosex性欧美| 91精品国产综合久久精品麻豆| 欧美 日本 国产| 午夜视频一区| 国产主播喷水一区二区| 毛片网站在线| 欧美日韩国产限制| 国产精品一级无码| 外国成人免费视频| 国产精品久久一| 三级av在线播放| 亚洲午夜av在线| 91网址在线观看精品| 不卡av一区二区| 欧美亚洲伦理www| 女人18毛片水真多18精品| 1区2区3区国产精品| www.xxx亚洲| 伊人成综合网yiren22| 国内外成人免费激情在线视频网站| 国产精品伦一区二区三区| 国产视频在线观看一区二区三区| 久色视频在线播放| 精品少妇一区| 久久久爽爽爽美女图片| www.国产精品视频| 亚洲欧美日韩中文播放 | 成人av动漫| 欧美国产日韩二区| www夜片内射视频日韩精品成人| 国产精品成人一区二区艾草| 91看片在线免费观看| 成人久久久久| 国产精品视频午夜| 国产小视频免费在线观看| 日韩欧美中文在线| 亚洲一级中文字幕| 快she精品国产999| 日韩欧美一区二区三区四区五区| 国产日韩电影| 中文字幕综合在线| 中文字幕日韩国产| 亚洲人成影院在线观看| 少妇性l交大片7724com| 国产一区欧美| 国产一区国产精品| 在线看的毛片| 在线中文字幕日韩| 国产免费无遮挡| 亚洲一二三区在线观看| 30一40一50老女人毛片| 日韩精品一级中文字幕精品视频免费观看 | 国产精品欧美久久久久天天影视| 日韩一区日韩二区| 一本色道久久hezyo无码| 亚洲一区二区伦理| 亚洲精品久久久久久一区二区| 午夜不卡一区| 国内精品久久久久久影视8| 欧洲成人av| 欧美色电影在线| 欧美成人精品欧美一| www.久久久久久久久| 成熟老妇女视频| 综合日韩在线| 你懂的网址一区二区三区| aaaa欧美| 欧美精品久久久久| 国产精品久久一区二区三区不卡 | 91精品综合久久久久久久久久久 | 日韩女优在线播放| 4438x成人网全国最大| 亚洲国产成人av在线| 免费av中文字幕| 亚洲欧美激情小说另类| 日韩av一二区| 国产乱色国产精品免费视频| 5月婷婷6月丁香| 99久久.com| 六月婷婷久久| 蜜桃在线一区| 国产成人精品久久久| 成人短视频在线观看| 日韩精品中文字幕在线观看| 糖心vlog精品一区二区| 亚洲国产裸拍裸体视频在线观看乱了| 国产高清一区二区三区四区| 国产超碰在线一区| 天天摸天天舔天天操| 亚洲神马久久| 无码人妻aⅴ一区二区三区日本| 日日天天久久| 9a蜜桃久久久久久免费| 成人全视频在线观看在线播放高清| 欧美区在线播放| 91在线不卡| 日韩国产在线看| 亚洲乱熟女一区二区| 欧美日韩五月天| 五月天激情四射| 亚洲午夜在线电影| 日本中文字幕免费在线观看| 国产欧美一区视频| 国产精品福利导航| 成人污污视频在线观看| 亚洲精品手机在线观看| 日本不卡高清视频| 国产精品乱码久久久久| 制服诱惑一区二区| 婷婷无套内射影院| 欧美午夜免费影院| 久久www视频| 久久人体视频| 亚洲国产一区二区三区在线| 美日韩中文字幕| 精品免费视频123区| 国产精品主播在线观看| 成人区精品一区二区| 日韩区欧美区| 97久久精品午夜一区二区| 亚洲人成网站在线在线观看| 国产精品久久在线观看| 欧美日韩国产网站| 国产精品黄视频| 国产在线|日韩| 国产精品成人v| 欧美电影免费观看| 国产成人精品一区二区三区| 天堂√中文最新版在线| …久久精品99久久香蕉国产| 日韩激情电影免费看| 69av在线视频| 在线观看的黄色| 国产精品成人aaaaa网站| 视频一区在线免费看| 国产精品久久久久久久久久久不卡 | 一区二区三区中文免费| 九九视频在线免费观看| 亚洲综合激情网| 精品无码人妻一区二区三区| 亚洲成在人线免费| 欧美一区二区三区四| 一本色道综合亚洲| 国产精品露脸视频| 欧美精选一区二区| 亚洲av无码乱码国产精品| 精品少妇一区二区三区在线视频| 亚洲精品一级片| 亚洲精品一区二区三区婷婷月| 国产午夜精品一区理论片| 在线观看久久av| 超碰在线免费播放| 国语自产精品视频在线看一大j8| 色网在线免费观看| 国产精品美女久久久久av超清| 久久精品超碰| 91嫩草免费看| 亚洲动漫精品| 一级做a爰片久久| 亚洲视屏一区| 北条麻妃视频在线| 韩国女主播成人在线| 无码人妻一区二区三区在线| 国产亚洲综合色| 国产一区二区视频在线观看免费| 香蕉成人啪国产精品视频综合网| 一级片视频在线观看| 欧美精品1区2区3区| 人人妻人人玩人人澡人人爽| 亚洲色图25p| √天堂8在线网| 青青久久av北条麻妃海外网| 亚洲成a人片777777久久| 国产日韩二区| 欧美3p在线观看| 99精品在线免费视频| 久久9热精品视频| 国产不卡一二三| 国产精品久久久久久久久果冻传媒| 久草视频在线免费看| 91福利精品视频| 免费av网站观看| 少妇高潮久久久久久潘金莲| 碰碰在线视频| 99久久精品无码一区二区毛片| 中文精品一区二区| 亚洲爆乳无码精品aaa片蜜桃| 日韩av午夜在线观看| www.四虎在线| 亚洲欧美中日韩| 亚洲色成人www永久网站| 精品国产三级电影在线观看| 色开心亚洲综合| 日本久久精品视频| 精品亚洲自拍| 亚洲精品国产suv一区88| 男人操女人的视频在线观看欧美| 国产a级黄色片| 亚洲精品视频在线| 亚洲图片视频小说| 亚洲码在线观看| gogo高清在线播放免费| 91久久久久久久久久久久久| 精品黄色一级片| 能在线观看的av| 成人app下载| 欧美xxxx黑人xyx性爽| 7777精品久久久大香线蕉| 1024国产在线| 国产精品一区二区三| 国产亚洲电影| 欧美成人黑人猛交| 91小视频在线免费看| 日韩成人av毛片| 精品国产网站在线观看| 女人天堂av在线播放| 91精品国产99久久久久久红楼| 久久麻豆精品| 欧美一级xxxx| 亚洲色图欧美激情| 国产又粗又猛又爽又黄的| 最新国产成人av网站网址麻豆| 欧美不卡高清一区二区三区| 日本不卡一区| 视频一区中文字幕| 精品无人区无码乱码毛片国产| 日韩欧美亚洲成人| 日韩a在线观看| 国产不卡视频在线| 精品国产一区二区三区久久久蜜臀| 男人操女人免费软件| 久久久五月婷婷| 无码一区二区三区在线观看| 亚洲四色影视在线观看| 电影亚洲精品噜噜在线观看| 日本高清一区| 免费在线一区观看| 97精品在线播放| 日韩欧美国产综合| 超碰97免费在线| 精品欧美日韩在线| 日韩—二三区免费观看av| 欧美一区二区三区粗大| 欧美精品日韩一本| 在线观看wwwxxxx| 国产福利久久精品| 亚洲一区二区伦理| 91免费在线看片| 日韩一区二区三区免费看 | 川上优av一区二区线观看| 亚洲精品成人无限看| av天堂一区二区| 欧美日韩国产在线看| 成人精品一区二区三区校园激情| 国产女精品视频网站免费| 亚洲视频在线免费| 中文视频在线观看| 欧洲激情一区二区| www免费视频观看在线| 国产综合精品一区二区三区| 久久经典综合| 国产精品成人69xxx免费视频| 亚洲精品在线免费观看视频| 欧美1级2级| 成年人三级视频| 91在线porny国产在线看| 自拍偷拍精品视频| 久久免费在线观看| 精品久久不卡| 中国男女全黄大片| 欧美主播一区二区三区美女| 伊人福利在线| 欧美日韩在线观看一区二区三区| 久久国产精品99久久人人澡| 久久精品这里有| 正在播放欧美一区| 哺乳一区二区三区中文视频| 精品日韩久久久| 亚洲第一狼人社区| 日韩理伦片在线| 精品在线视频一区二区三区| 国产资源在线一区| 天天干天天操天天爱| 欧美激情亚洲另类| 日韩免费久久| 少妇按摩一区二区三区| 欧美一区二区在线播放| 综合久久2023|