介绍
小编给大家分享一下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万能适配器