xamarin的Android如何实现ListView万能适配器

  介绍

小编给大家分享一下xamarin的Android如何实现ListView万能适配器,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

本章主要分为以下三点:

<李>

打造通用的ViewHolder优化ListView性能

<李>

使用泛型适配器适应不同布局的ListView

<李>

c#委托和Java匿名内部类的比较

打造通用的ViewHolder优化ListView性能

, public  class  ViewHolder: Java . lang . object   {才能   ,,,private  SparseArray,视图;   ,,,,View  ConvertView;   ,,,private  Context  Context ;   ,,,,int  mPosition;   ,,,private  ViewHolder (Context  _context ViewGroup  parent , int  itemLayoutId, int 位置)   ,,,{   ,,,,,this.mPosition =,位置;   ,,,,,Views =, new  SparseArray ();   ,,,,,ConvertView =, LayoutInflater.From (_context) .Inflate (itemLayoutId, null);   ,,,,,ConvertView.Tag =,;   ,,,}   ,,,public  static  ViewHolder  (Context  Context ,, View  convertView, ViewGroup  parent , int  itemLayoutId, int 位置)   ,,,{   ,,,,,if  (convertView ==, null)   ,,,,,{   ,,,,,,,return  new  ViewHolder(父母,上下文,还以为,itemLayoutId,位置);   ,,,,,}   ,,,,,   ,,,,,{   ,,,,,,,ViewHolder  holder =, (ViewHolder) convertView.Tag;   ,,,,,,,holder.mPosition =,位置;   ,,,,,,,return 支架;   ,,,,,}   ,,,}   ,,,public  T  GetView (int  viewId), where  T :视图   ,,,{   ,,,,,View  View =, Views.Get (viewId);   ,,,,,if  (view ==, null)   ,,,,,{   ,,,,,,,view =, ConvertView.FindViewById (viewId);   ,,,,,,,Views.Put (viewId、查看);   ,,,,,}   ,,,,,return  (T);   ,,,}   ,,,public  View  GetConvertView ()   ,,,{   ,,,,,return  ConvertView;   ,,,}   ,,,///,& lt; summary>   ,,,///,给TextView 设置文本   ,,,///,& lt;/summary>   ,,,///,& lt; param  name=皏iewId"祝辞& lt;/param>   ,,,///,& lt; param  name=皌ext"祝辞& lt;/param>   ,,,///,& lt; returns> & lt;/returns>   ,,,public  ViewHolder  SetText (int  viewId  string 文本)   ,,,{   ,,,,,TextView  view =, GetView (viewId);   ,,,,,view.Text =,文本;   ,,,,,return ;   ,,,}      ,,,///,& lt; summary>   ,,,///,给ImageView 设置图片   ,,,///,& lt;/summary>   ,,,public  ViewHolder  SetImageBitMap (int  viewId ,, Bitmap  bm)   ,,,{   ,,,,,ImageView  view =, GetView (viewId);   ,,,,,view.SetImageBitmap (bm);   ,,,,,return ;   ,,,}   以前,,}

稍微解释一下:

ViewHolder的构造方法中初始化变量,并将视图的布局视图的标记设置成ViewHolder的实例
得到方法使用单例模式初始化ViewHolder
GetView泛型方法获取ListView布局中的空间
SetText, SetImageBitMap给一些常用的控件复值

<强>使用泛型适配器适应不同布局的ListView

CommonAdapter是一个泛型的基类,一些重复的重写方法都在这个基类,然后我们写一个子类继承这个CommonAdapter,就简化了很多代码

, public  abstract  class  CommonAdapter: BaseAdapter   {才能   ,,,Context  mContext;   ,,,,List, mData;   ,,,,int  mItemLayoutId;   ,,,public  CommonAdapter (Context 上下文,List,数据,int  itemLayoutId):基础()   ,,,{   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

xamarin的Android如何实现ListView万能适配器