Xamarin.Android 设置BaseAdapter 的基础公共类
https://blog.csdn.net/sinat_26562875/article/details/51447785
////// 通用适配器 /// /// public class CommonAdapter : BaseAdapter { private readonly List items; private readonly Activity context; private readonly int layoutId; public delegate View GetViewEvent( int position, View convertView, ViewGroup parent, T item, ViewHolder viewHolder); /// /// 加载item的View事件 /// public event GetViewEvent OnGetView; public CommonAdapter(Activity context, int layoutId, List items) { this.context = context; this.layoutId = layoutId; this.items = items; } public override T this[int position] { get { return items[position]; } } public override int Count { get { return items.Count; } } public override long GetItemId(int position) { return position; } public override View GetView(int position, View convertView, ViewGroup parent) { var item = items[position]; var view = convertView; var viewHolder = ViewHolder.Get(context, convertView, parent, layoutId, position); if (OnGetView != null) return OnGetView(position, convertView, parent, item, viewHolder); return view; } }
////// 通用ViewHolder /// public class ViewHolder : Object { private readonly SparseArray views; private int position; private readonly View ConvertView; public ViewHolder(Activity context, ViewGroup parent, int layoutID, int position) { this.position = position; views = new SparseArray (); ConvertView = context.LayoutInflater.Inflate(layoutID, null); ConvertView.Tag = this; } //单例模式获取对象实例 public static ViewHolder Get(Activity context, View convertView, ViewGroup parent, int layoutId, int position) { if (convertView == null) return new ViewHolder(context, parent, layoutId, position); var holder = (ViewHolder) convertView.Tag; holder.position = position; return holder; } public View GetConvertView() { return ConvertView; } /// /// 通过ViewID获取控件 /// /// /// /// public T GetView (int viewId) where T : View { var view = views.Get(viewId); if (view == null) { view = ConvertView.FindViewById (viewId); views.Put(viewId, view); } return (T) view; } /// /// 普通ImageView设置图片 /// /// /// /// public ViewHolder SetImageBitmap(int viewId, Bitmap bm) { var view = GetView (viewId); if (view != null) view.SetImageBitmap(bm); return this; } /// 为任意View设置监听 /// /// View下所有的控件类型 /// 控件ID /// 控件 View /// /// public ViewHolder SetOnClickListener (int viewId, T widget, View.IOnClickListener listener) where T : View { View view = GetView (viewId); view.SetOnClickListener(listener); return this; } }
使用方法
private ControlExtend.CommonAdapter
_adapter = new ControlExtend.CommonAdapter