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

Android自定義BaseAdapter最佳實(shí)踐

移動開發(fā) Android
本文主要介紹如何將BaseAdapter的使用封裝為跟RecyclerView的Adapter使用方式一致。

雖然現(xiàn)在很多新的項(xiàng)目都在使用RecyclerView,但是很多開發(fā)者在一些場景中還是傾向使用ListView或者GridView,然后就是需要寫許多的Adapter。一次項(xiàng)目組在新啟動一個(gè)新項(xiàng)目的時(shí)候,有個(gè)同事拿來了一個(gè)網(wǎng)上說的***Adapter,在使用的時(shí)候發(fā)現(xiàn)即使在單個(gè)視圖類型一旦邏輯判斷比較復(fù)雜情況下非常不方便,更不用說在適配器Adapter中使用多視圖類型了,這里僅是個(gè)人觀點(diǎn),也許沒有掌握到精華,這是有關(guān)***適配器Adapter的一片博文 Android 快速開發(fā)系列 打造***的ListView GridView 適配器 。

當(dāng)然了隨著RecyclerView的使用,網(wǎng)上也有很多有關(guān)對RecyclerView多視圖類型Adapter封裝的博客,MultiType 3.0是一個(gè)大神寫的比較全面的Adapter,這篇博客Android 復(fù)雜的多類型列表視圖新寫法:MultiType 3.0有詳細(xì)的用法。***適配器Adapter自己使用不是很方便,于是就參看RecyclerView中Adapter的實(shí)現(xiàn)方式進(jìn)行對BaseAdapter進(jìn)行了簡單的封裝,封裝的目一是為了少寫代碼,另外一個(gè)就是讓邏輯看上去更清晰一些。我們知道在RecyclerView的Adapter實(shí)現(xiàn)中它將視圖創(chuàng)建與數(shù)據(jù)綁定進(jìn)行了分離,同時(shí)將對View的查找創(chuàng)建也剝離開來了,本文就主要介紹如何將BaseAdapter的使用封裝為跟RecyclerView的Adapter使用方式一致。由于很多時(shí)候在Adapter中我們都是使用的簡單的視圖類型,即單類型視圖,因此本文將單視圖類型的Adapter單獨(dú)封裝了一下,比使用多視圖類型的Adapter使用了更嚴(yán)格的數(shù)據(jù)類型檢查,同時(shí)在使用上也方便了許多。

Android自定義BaseAdapter***實(shí)踐

Android自定義BaseAdapter***實(shí)踐

RecyclerView中Adapter的使用

在使用RecyclerView的Adapter的時(shí)候我們首先需要繼承RecyclerView的一個(gè)靜態(tài)內(nèi)部類Adapter,然后重寫三個(gè)方法,實(shí)際上下面三個(gè)方法是必須要重寫的,因?yàn)槎际浅橄蠓椒ā?/p>

  • getItemCount()
  • onBindViewHolder(VH holder, int position)
  • onCreateViewHolder(ViewGroup parent, int viewType)

一般情況下重寫上面三個(gè)方法就可以,但是如果存在多視圖類型,在第三個(gè)方法

onCreateViewHolder()方法中我們也可以看到有一個(gè)參數(shù)是viewType,該參數(shù)作用就是針對不同的viewType需要創(chuàng)建不同的ViewHolder,因此還需要重寫一個(gè)方法getItemViewType(int position),針對多視圖類型同BaseAdapter實(shí)現(xiàn)方式倒是很像,在BaseAdapter中這是需要除此之外還要重寫一個(gè)方法getViewTypeCount(),但是在RecyclerView的Adapter中不需要該方法。

簡單類型Adapter

 

  1. private class MyAdapter extends RecyclerView.Adapter<MyViewHolder> { 
  2.  
  3.     @Override 
  4.     public int getItemCount() { 
  5.         return COUNT
  6.     } 
  7.  
  8.     @Override 
  9.     public void onBindViewHolder(MyViewHolder holder, int position) { 
  10.         holder.textView.setText("TEXT_" + position); 
  11.     } 
  12.  
  13.     @Override 
  14.     public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
  15.         View view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.item_text, parent, false); 
  16.         MyViewHolder holder = new MyViewHolder(view); 
  17.         return holder; 
  18.     } 
  19.  
  20.  
  21. private static class MyViewHolder extends RecyclerView.ViewHolder { 
  22.     private TextView textView; 
  23.  
  24.     public MyViewHolder(View itemView) { 
  25.         super(itemView); 
  26.         textView = (TextView) itemView.findViewById(R.id.textView); 
  27.     } 

復(fù)雜類型Adapter

 

  1. private class MyAdapter extends RecyclerView.Adapter<ViewHolder> { 
  2.  
  3.     @Override 
  4.     public int getItemCount() { 
  5.         return COUNT
  6.     } 
  7.  
  8.     @Override 
  9.     public int getItemViewType(int position) { 
  10.         return position % 2 == 0 ? TYPE_IMAGE : TYPE_TEXT; 
  11.     } 
  12.  
  13.     @Override 
  14.     public void onBindViewHolder(ViewHolder holder, int position) { 
  15.         int type = getItemViewType(position); 
  16.         switch (type) { 
  17.         case TYPE_TEXT: 
  18.             ((MyTextHolder) holder).textView.setText("TEXT_" + position); 
  19.             break; 
  20.         case TYPE_IMAGE: 
  21.             ((MyImageHolder) holder).imageView.setImageResource(R.drawable.image); 
  22.             break; 
  23.         } 
  24.     } 
  25.  
  26.     @Override 
  27.     public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
  28.         View view
  29.         ViewHolder holder = null
  30.         switch (viewType) { 
  31.         case TYPE_TEXT: 
  32.             view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.item_text, parent, false); 
  33.             holder = new MyTextHolder(view); 
  34.             break; 
  35.         case TYPE_IMAGE: 
  36.             view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.item_image, parent, false); 
  37.             holder = new MyImageHolder(view); 
  38.             break; 
  39.         } 
  40.         return holder; 
  41.     } 
  42.  
  43. private class MyTextHolder extends RecyclerView.ViewHolder { 
  44.     private TextView textView; 
  45.  
  46.     public MyTextHolder(View itemView) { 
  47.         super(itemView); 
  48.         textView = (TextView) itemView.findViewById(R.id.textView); 
  49.     } 
  50.  
  51. private class MyImageHolder extends ViewHolder { 
  52.     private ImageView imageView; 
  53.  
  54.     public MyImageHolder(View itemView) { 
  55.         super(itemView); 
  56.         imageView = (ImageView) itemView.findViewById(R.id.imageView); 
  57.     } 

自定義BaseAdapter

在自定義基類之前,先簡單分析一下,我們需要自定義一個(gè)支持單種視圖的Adapter,還要自定義一個(gè)支持多種視圖類型的Adapter,兩個(gè)類都要繼承BaseAdapter,先將兩個(gè)類都公用的部分抽取出來定義為MyAdapter。

 

  1. public abstract class MyAdapter<T> extends BaseAdapter { 
  2.  
  3.     protected List<T> dataList = new ArrayList<>(); 
  4.     protected Context context; 
  5.     protected LayoutInflater inflater; 
  6.  
  7.     public MyAdapter(Context context) { 
  8.         this.context = context; 
  9.         inflater = LayoutInflater.from(context); 
  10.     } 
  11.  
  12.     public void setDataList(List<T> dataList) { 
  13.         this.dataList = dataList; 
  14.         notifyDataSetChanged(); 
  15.     } 
  16.  
  17.     @Override 
  18.     public int getCount() { 
  19.         if (null == dataList) { 
  20.             return 0; 
  21.         } 
  22.         return dataList.size(); 
  23.     } 
  24.  
  25.     @Override 
  26.     public T getItem(int position) { 
  27.         return dataList.get(position); 
  28.     } 
  29.  
  30.     @Override 
  31.     public long getItemId(int position) { 
  32.         return position; 
  33.     } 
  34.  

在RecyclerView的Adapter實(shí)現(xiàn)中是沒有g(shù)etView()方法的,下面我們就分析一下getView()方法如何拆分,一般情況下我們在實(shí)現(xiàn)getView()方法都是如下流程。

 

  1. public View getView(int position, View convertView, ViewGroup parent) { 
  2.     ViewHolder holder = null
  3.     if (null == convertView) { 
  4.         //填充布局 
  5.         convertView=inflater.inflate(R.layout.item_layout, parent,false); 
  6.         holder = new ViewHolder(); 
  7.         //通過ID查詢控件 
  8.         holder.textView=(TextView)convertView.findViewById(R.id.textView); 
  9.         holder.imageView=(ImageView)convertView.findViewById(R.id.imageView); 
  10.         convertView .setTag(holder); 
  11.     } else { 
  12.         holder = (ViewHolder) convertView.getTag(); 
  13.     } 
  14.     //賦值邏輯 
  15.     return convertView; 
  16. //一個(gè)空的ViewHolder 
  17. public static class ViewHolder{ 
  18.     TextView textView; 
  19.     ImageView imageView; 

Java編程比較流行的一種編程方式不是說面向接口編程嗎,在Android開發(fā)中也有一個(gè)開發(fā)方式叫做面向Holder的編程,上面代碼是傳統(tǒng)的實(shí)現(xiàn)ViewHolder的方式,說句實(shí)現(xiàn)話就沒做什么事,就是作為一個(gè)載體承載著我們需要的控件。我們讓ViewHolder多做一些事情,讓它在convertView==null情況下需要做的多數(shù)邏輯都放到ViewHolder中去。

 

  1. public class ViewHolder { 
  2.     private final View itemView; 
  3.  
  4.     public ViewHolder(View itemView) { 
  5.         if (null == itemView) { 
  6.             throw new IllegalArgumentException("itemView must not be null"); 
  7.         } else { 
  8.             this.itemView = itemView; 
  9.             itemView.setTag(this); 
  10.         } 
  11.     } 
  12.  
  13.     public View getItemView() { 
  14.         return itemView; 
  15.     } 

在ViewHolder中的itemView就是getView()方法中的convertView,這里剛好是條目的根View,類似RecyclerView中ViewHolder構(gòu)造方法中itemView。由于不同的視圖需要創(chuàng)建不同的ViewHolder,因此我們可以將創(chuàng)建ViewHolder的方法設(shè)置為抽象的方法暴露出去,另外賦值的時(shí)候我們也需要根據(jù)具體的業(yè)務(wù)進(jìn)行賦值,同樣設(shè)置一個(gè)抽象方法。

 

  1. public abstract class SimpleAdapter<T,VH extends ViewHolder> extends MyAdapter<T> { 
  2.  
  3.     public SimpleAdapter(Context context) { 
  4.         super(context); 
  5.     } 
  6.  
  7.     public View getView(int position, View convertView, ViewGroup parent) { 
  8.         VH holder = null
  9.         if (null == convertView) { 
  10.             holder = onCreateViewHolder(parent); 
  11.             convertView = holder.getItemView(); 
  12.         } else { 
  13.             holder = (VH) convertView.getTag(); 
  14.         } 
  15.         onBindViewHolder(holder, position); 
  16.         return convertView; 
  17.     } 
  18.  
  19.     public abstract void onBindViewHolder(VH holder, int position); 
  20.  
  21.     public abstract VH onCreateViewHolder(ViewGroup parent); 
  22.  

在設(shè)置多視圖類型的Adapter的時(shí)候只需要在創(chuàng)建ViewHolder的時(shí)候多傳入一個(gè)viewType的參數(shù)即可。

 

  1. public abstract class MultiAdapter<T> extends MyAdapter<T> { 
  2.  
  3.     public MultiAdapter(Context context) { 
  4.         super(context); 
  5.     } 
  6.  
  7.     @Override 
  8.     public View getView(int position, View convertView, ViewGroup parent) { 
  9.         ViewHolder holder = null
  10.         if (null == convertView) { 
  11.             holder = onCreateViewHolder(parent, getItemViewType(position)); 
  12.             convertView = holder.getItemView(); 
  13.         } else { 
  14.             holder = (ViewHolder) convertView.getTag(); 
  15.         } 
  16.         onBindViewHolder(holder, position); 
  17.         return convertView; 
  18.     } 
  19.  
  20.     public abstract void onBindViewHolder(ViewHolder holder, int position); 
  21.  
  22.     public abstract ViewHolder onCreateViewHolder(ViewGroup parent, int viewType); 
  23.  

自定義BaseAdapter的使用

單視圖類型SimpleAdapter使用

 

  1. public class TextAdapter extends SimpleAdapter<String, TextAdapter.TextHolder> { 
  2.  
  3.     public TextAdapter(Context context) { 
  4.         super(context); 
  5.     } 
  6.  
  7.     @Override 
  8.     public void onBindViewHolder(TextHolder holder, int position) { 
  9.         holder.textView.setText(getItem(position)); 
  10.     } 
  11.  
  12.     @Override 
  13.     public TextHolder onCreateViewHolder(ViewGroup parent) { 
  14.         View convertView=inflater.inflate(R.layout.item_text, parent, false); 
  15.         return new TextHolder(convertView); 
  16.     } 
  17.  
  18.     static class TextHolder extends ViewHolder{ 
  19.  
  20.         public TextView textView; 
  21.  
  22.         public TextHolder(View itemView) { 
  23.             super(itemView); 
  24.             textView=(TextView) itemView.findViewById(R.id.textView); 
  25.         } 
  26.     } 

這里我們使用了兩個(gè)泛型,一個(gè)是ViewHolder中支持的數(shù)據(jù)類型String,另外一個(gè)就是我們需要創(chuàng)建的ViewHolder,這樣在onCreateViewHolder方法的返回值就會自動返回我們自定義的ViewHolder,有關(guān)泛型更多的知識可以參看Java泛型使用解析,單視圖類型Adapter的使用比RecyclerView的Adapter還要方便許多。

多視圖類型的使用

 

  1. public class RichAdapter extends MultiAdapter<String> { 
  2.  
  3.     private static final int TEXT = 0; 
  4.     private static final int PIC = 1; 
  5.  
  6.     public RichAdapter(Context context) { 
  7.         super(context); 
  8.     } 
  9.  
  10.     @Override 
  11.     public int getViewTypeCount() { 
  12.         return 2; 
  13.     } 
  14.  
  15.     @Override 
  16.     public int getItemViewType(int position) { 
  17.         if (position % 3 == 0) { 
  18.             return PIC; 
  19.         } else { 
  20.             return TEXT; 
  21.         } 
  22.     } 
  23.  
  24.     @Override 
  25.     public void onBindViewHolder(ViewHolder holder, int position) { 
  26.         switch (getItemViewType(position)) { 
  27.         case TEXT: 
  28.             TextHolder textHolder=(TextHolder) holder; 
  29.             textHolder.textView.setText(getItem(position)); 
  30.             break; 
  31.         case PIC: 
  32.             ImageHolder imageHolder=(ImageHolder) holder; 
  33.             imageHolder.imageView.setImageResource(R.drawable.image); 
  34.             break; 
  35.         } 
  36.     } 
  37.  
  38.     @Override 
  39.     public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
  40.         View itemView = null
  41.         ViewHolder holder = null
  42.         switch (viewType) { 
  43.         case TEXT: 
  44.             itemView = inflater.inflate(R.layout.item_text, parent, false); 
  45.             holder = new TextHolder(itemView); 
  46.             break; 
  47.         case PIC: 
  48.             itemView = inflater.inflate(R.layout.item_image, parent, false); 
  49.             holder = new ImageHolder(itemView); 
  50.             break; 
  51.         } 
  52.         return holder; 
  53.     } 
  54.  
  55.     private static class TextHolder extends ViewHolder { 
  56.         TextView textView; 
  57.  
  58.         public TextHolder(View itemView) { 
  59.             super(itemView); 
  60.             textView = (TextView) itemView.findViewById(R.id.textView); 
  61.         } 
  62.  
  63.     } 
  64.  
  65.     private static class ImageHolder extends ViewHolder { 
  66.         ImageView imageView; 
  67.  
  68.         public ImageHolder(View itemView) { 
  69.             super(itemView); 
  70.             imageView = (ImageView) itemView.findViewById(R.id.imageView); 
  71.         } 
  72.     } 

這里的使用情況跟RecyclerView的使用幾乎是一模一樣,唯一不一樣的地方就是多寫了一個(gè)getViewTypeCount()方法,在ListView或者GridView使用BaseAdapter實(shí)現(xiàn)多種類型視圖的時(shí)候該方法必須要重寫。

責(zé)任編輯:未麗燕 來源: 碼農(nóng)網(wǎng)
相關(guān)推薦

2017-05-19 10:03:31

AndroidBaseAdapter實(shí)踐

2010-08-12 09:45:33

jQuery自定義事件

2023-12-21 09:00:21

函數(shù)React 組件useEffect

2016-12-26 15:25:59

Android自定義View

2016-11-16 21:55:55

源碼分析自定義view androi

2025-01-22 11:10:34

2013-04-01 14:35:10

Android開發(fā)Android自定義x

2025-05-15 07:11:51

2016-04-12 10:07:55

AndroidViewList

2010-02-07 14:02:16

Android 界面

2023-06-28 08:05:46

場景vue3自定義

2015-02-12 15:33:43

微信SDK

2023-06-27 15:02:47

2013-01-09 17:22:38

Android開發(fā)Camera

2015-02-12 15:38:26

微信SDK

2013-05-02 14:08:18

2014-12-10 10:37:45

Android自定義布局

2015-02-11 17:49:35

Android源碼自定義控件

2014-12-17 09:46:30

AndroidListView最佳實(shí)踐

2018-09-28 05:18:41

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

色偷偷www8888| 国产一区二区三区精彩视频| 99精品视频在线播放免费| 国产综合网站| 亚洲人高潮女人毛茸茸| 欧美国产日韩另类| heyzo高清国产精品| 中文字幕 久热精品 视频在线| 92看片淫黄大片看国产片| 国产区在线观看视频| 国产精品不卡| 亚洲欧美日韩高清| 亚洲妇女无套内射精| 国模一区二区| 亚洲成人动漫在线观看| 亚洲资源在线网| 日韩在线观看视频网站| 精品无人码麻豆乱码1区2区| 欧美亚洲视频在线观看| 玖玖爱这里只有精品| 视频精品在线观看| 亚洲国产三级网| 久久人人爽人人片| jvid一区二区三区| 色综合天天综合在线视频| 欧美另类videosbestsex日本| 国产特黄在线| 成人av资源在线| 3d动漫啪啪精品一区二区免费| 久久久精品毛片| 国产亚洲一级| 国模精品一区二区三区色天香| 国产色无码精品视频国产| 国内黄色精品| 国产午夜精品久久久| 熟妇高潮一区二区| 免费观看亚洲视频大全| 欧美久久一二三四区| 尤蜜粉嫩av国产一区二区三区| 性欧美freesex顶级少妇| 亚洲一区二区五区| www.男人天堂网| 成人无遮挡免费网站视频在线观看| 国产欧美一区二区精品性| 久久青青草原一区二区| 色屁屁草草影院ccyycom| 国产69精品久久99不卡| 91在线免费看片| av手机免费看| 国产传媒欧美日韩成人| 成人免费视频网站入口| 欧美一级在线免费观看| 成人久久18免费网站麻豆| 91青青草免费在线看| va视频在线观看| 国产成人亚洲综合a∨婷婷| 亚洲自拍偷拍福利| 亚洲va久久久噜噜噜无码久久| 国产电影一区二区三区| 国产成人成网站在线播放青青| 午夜精品久久久久久久第一页按摩 | 欧美超级乱淫片喷水| 在线看的片片片免费| 综合久久婷婷| 久久久免费精品| 国产又黄又爽又色| 日韩成人免费电影| 国产精品影片在线观看 | 精品国产91乱码一区二区三区| 国产精品一区二区在线免费观看| 第一区第二区在线| 精品偷拍各种wc美女嘘嘘| av女人的天堂| 婷婷丁香综合| 韩国视频理论视频久久| 亚洲天堂男人av| 久久99国产精品尤物| 4444kk亚洲人成电影在线| 色哟哟中文字幕| 久久久91精品国产一区二区三区| 亚洲一一在线| 日本资源在线| 91久久国产最好的精华液| 日韩av.com| 极品束缚调教一区二区网站 | 丰满的护士2在线观看高清| 丁香五六月婷婷久久激情| 香蕉视频网站入口| 亚洲国产中文在线| 亚洲欧美另类中文字幕| 亚洲天堂一级片| 国产精品久久久久9999高清| 国产欧美日韩视频| 欧美视频一二区| 国产精品午夜电影| 日韩亚洲欧美视频| 巨大黑人极品videos精品| 欧美精品一区二区三区蜜臀| 一级特黄曰皮片视频| 欧美国产先锋| 国产精品久久久久9999| 亚洲精品综合久久| 国产精品麻豆网站| 日日橹狠狠爱欧美超碰| 999精品嫩草久久久久久99| 日韩av一卡二卡| 极品色av影院| 肉色丝袜一区二区| 国产伦精品一区二区三区| 在线视频1区2区| 丁香五六月婷婷久久激情| 韩国三级在线看| 久久裸体网站| 国产成人精品一区二区三区| 好吊色视频一区二区| 国产欧美日韩在线看| 3d动漫一区二区三区| 国产人与zoxxxx另类91| 中文字幕欧美专区| 国产精品人人人人| 成人三级在线视频| 超碰97在线看| 国产精品igao视频网网址不卡日韩| 亚洲女人天堂视频| 午夜偷拍福利视频| 国产福利精品一区| 400部精品国偷自产在线观看| abab456成人免费网址| 国产丝袜精品视频| 日韩精品1区2区| 东方欧美亚洲色图在线| 欧美精品一区二区性色a+v| 日本一区免费网站| 亚洲欧美综合区自拍另类| 国产成人一区二区三区影院在线| 国产91丝袜在线18| 成年人视频网站免费| 欧美高清hd| 欧美成人手机在线| 99视频国产精品免费观看a| 亚洲欧美综合网| 亚洲综合婷婷久久| 91精品蜜臀一区二区三区在线| 国产精品久久久999| av基地在线| 欧美日韩1区2区| 中国一级片在线观看| 精品写真视频在线观看| 亚洲美女自拍偷拍| 日韩精品三级| 九九热r在线视频精品| 国内老熟妇对白hdxxxx| 亚洲一区二区在线观看视频 | 污污网站免费看| 色喇叭免费久久综合网| 国产专区欧美专区| 精精国产xxxx视频在线| 日韩亚洲欧美在线观看| 欧美爱爱小视频| 成人精品小蝌蚪| 国产精品秘入口18禁麻豆免会员| 日韩美女国产精品| 国产精品白嫩初高中害羞小美女| 国产三区四区在线观看| 欧美日韩精品一区二区| 精品欧美一区二区久久久久| 成人性生交大片免费看中文网站| 日韩精品 欧美| 国产一区二区三区四区五区| 国产欧美日韩丝袜精品一区| 日韩精品卡一| 国产亚洲xxx| 国产精品无码免费播放| 亚洲一二三区不卡| 欧美图片一区二区| 麻豆成人91精品二区三区| 欧美日韩视频免费| 九色精品91| 91美女福利视频高清| 啊啊啊久久久| 这里只有视频精品| 亚洲免费不卡视频| 欧美亚洲免费在线一区| 欧美三级免费看| 国产亚洲欧美色| 制服下的诱惑暮生| 久久不射2019中文字幕| 在线观看污视频| 国产精品探花在线观看| 亚洲精品女av网站| 中文在线免费视频| 伦理中文字幕亚洲| 毛片在线播放网址| 欧美一级高清大全免费观看| 国产成人综合欧美精品久久| 综合网在线视频| 亚洲午夜久久久久久久久红桃| 精品一区二区三区日韩| 日韩精品一区二区三区久久| 99久久婷婷| 蜜桃传媒一区二区| 亚洲小说春色综合另类电影| 国产成人短视频| 国产极品人妖在线观看| 中文字幕在线成人| 亚洲人成色777777老人头| 制服丝袜国产精品| 看黄色一级大片| 天天综合色天天| 青娱乐国产盛宴| 国产精品国产三级国产专播品爱网| 一区二区视频观看| 国产成人丝袜美腿| 色婷婷激情视频| 奇米在线7777在线精品| 无码人妻丰满熟妇区96| 欧美女人交a| 亚洲综合第一| 欧洲福利电影| 欧美一级片免费观看| 久久丝袜视频| 国产在线一区二| 成人三级av在线| 999在线观看免费大全电视剧| 国产激情欧美| 国产精品网站入口| 成人日韩在线| 日韩女优在线播放| 漫画在线观看av| 国内久久久精品| 国产丝袜在线观看视频| 欧美老女人性生活| 制服丝袜在线播放| 久久亚洲成人精品| а√天堂在线官网| 久久夜精品香蕉| 国产剧情在线| 欧美成人高清视频| av在线免费观看网址| 久久久91精品| 国产1区在线| 欧美黑人性视频| 678在线观看视频| 78色国产精品| 欧美xxxxxx| 国产精品激情自拍| 成人亚洲视频| 成人激情视频在线播放| 91精品国产自产观看在线| 成人激情视频网| 深夜福利一区二区三区| 高清日韩一区| 青青久久av| 日韩免费一区二区三区| 成人精品影视| av动漫免费观看| 欧美激情aⅴ一区二区三区| 奇米777四色影视在线看| 欧美激情1区| 9久久9毛片又大又硬又粗| 天堂精品中文字幕在线| 亚洲欧美在线精品| 国产精品一区二区三区网站| 中文字幕第九页| 久久久久国产精品人| 黑人操日本美女| 亚洲成人免费av| 国产一区二区视频免费| 欧美区在线观看| 蜜桃91麻豆精品一二三区| 精品网站999www| 免费黄网站在线播放| 欧美福利视频在线| 欧美xo影院| 亚洲综合色激情五月| 欧美一性一交| 午夜欧美性电影| 欧美日韩亚洲一区二区三区在线| 精品少妇一区二区三区在线| 老司机亚洲精品| 宇都宫紫苑在线播放| 久久亚洲二区三区| 我要看黄色一级片| 欧美日韩亚洲天堂| 国产精品爽爽久久久久久| 亚洲精品国产欧美| 欧美精品hd| 欧日韩在线观看| 日本成人精品| 欧美日韩精品综合| 欧美高清一区| 久草福利视频在线| 99精品一区二区| 国产稀缺精品盗摄盗拍| 欧美日韩在线免费| 国产富婆一级全黄大片| 国产香蕉精品视频一区二区三区 | 欧美手机在线| 精品丰满人妻无套内射| 久久成人免费网| 国产精品1000部啪视频| 亚洲精品国产无天堂网2021| 伊人成年综合网| 337p日本欧洲亚洲大胆色噜噜| av在线天堂播放| 9.1国产丝袜在线观看| 国产精区一区二区| 亚洲成色www久久网站| 国产一区二区三区久久久久久久久| 奇米777在线视频| 欧美激情一区在线观看| 国产成人在线视频观看| 精品三级在线观看| 日本www在线观看| 青青草国产精品一区二区| 最新精品在线| 欧洲精品视频在线| 美女视频一区在线观看| caopeng视频| 欧美日韩国产综合新一区| 亚洲av综合色区无码一区爱av| 久久久国产精品一区| 国模私拍国内精品国内av| 日韩精品另类天天更新| 小嫩嫩精品导航| 538国产视频| 婷婷夜色潮精品综合在线| 国产高潮流白浆喷水视频| 麻豆国产精品va在线观看不卡| 韩日一区二区| 午夜视频久久久| 日韩电影在线一区| 级毛片内射视频| 91久久精品一区二区三| 国产精品视频二区三区| 国产激情视频一区| 国产精品欧美三级在线观看| 玩弄japan白嫩少妇hd| 91麻豆123| 日日夜夜狠狠操| 亚洲人成电影在线| 成人va天堂| 神马影院我不卡| 人人超碰91尤物精品国产| 蜜臀久久99精品久久久久久| 在线视频国内一区二区| 国产一级在线| 国产免费一区视频观看免费| 日韩在线欧美| 天天久久综合网| 亚洲综合在线五月| 亚洲av成人精品日韩在线播放| 欧美性视频在线| 精品国产欧美日韩| 日本中文字幕精品—区二区| 亚洲三级免费电影| 国产按摩一区二区三区| 久久久久久18| 日韩理论电影中文字幕| 国产精品拍拍拍| 亚洲欧美在线aaa| 韩国中文字幕hd久久精品| 欧美在线视频免费观看| 日本成人小视频| 天天色天天干天天色| 婷婷六月综合亚洲| 91sp网站在线观看入口| 亚洲伊人久久大香线蕉av| 夜夜夜久久久| 三年中国中文观看免费播放| 制服丝袜在线91| 国内激情视频在线观看| 亚洲成人精品电影在线观看| 国产一区二区不卡在线 | 欧美色男人天堂| 国产成人在线视频免费观看| 国产欧美一区二区三区另类精品| 久久久精品性| 欧美日韩在线视频免费播放| 日韩精品在线视频观看| 日韩欧国产精品一区综合无码| 777久久精品一区二区三区无码| 91色在线porny| 亚洲天堂aaa| 97精品国产aⅴ7777| 日韩欧美视频专区| 蜜臀aⅴ国产精品久久久国产老师| 一本色道久久综合亚洲aⅴ蜜桃 | 潘金莲一级淫片aaaaa| 一本久久a久久免费精品不卡| 999国产在线视频| 精品人伦一区二区三区| 久久99九九99精品| 色婷婷av国产精品| 伦理中文字幕亚洲| 成人三级视频| 超碰男人的天堂| 欧美一区二区在线观看| 日本高清不卡一区二区三区视频| 精品国产av无码一区二区三区|