public class ViewHolder:Java.Lang.Object
{
private SparseArray<View> Views;
View ConvertView;
private Context context ;
int mPosition;
private ViewHolder(Context _context,ViewGroup parent ,int itemLayoutId,int position)
{
this.mPosition = position;
Views = new SparseArray<View>();
ConvertView = LayoutInflater.From(_context).Inflate(itemLayoutId,null);
ConvertView.Tag = this;
}
public static ViewHolder Get(Context context , View convertView,ViewGroup parent ,int itemLayoutId,int position)
{
if (convertView == null)
{
return new ViewHolder(context, parent, itemLayoutId, position);
}
else
{
ViewHolder holder = (ViewHolder)convertView.Tag;
holder.mPosition = position;
return holder;
}
}
public T GetView<T>(int viewId) where T :View
{
View view = Views.Get(viewId);
if (view == null)
{
view = ConvertView.FindViewById<T>(viewId);
Views.Put(viewId,view);
}
return (T)view;
}
public View GetConvertView()
{
return ConvertView;
}
/// <summary>
/// 给TextView 设置文本
/// </summary>
/// <param name="viewId"></param>
/// <param name="text"></param>
/// <returns></returns>
public ViewHolder SetText(int viewId ,string text)
{
TextView view = GetView<TextView>(viewId);
view.Text = text;
return this;
}
/// <summary>
/// 给ImageView 设置图片
/// </summary>
public ViewHolder SetImageBitMap(int viewId , Bitmap bm)
{
ImageView view = GetView<ImageView>(viewId);
view.SetImageBitmap(bm);
return this;
}
}
public abstract class CommonAdapter<T> :BaseAdapter
{
Context mContext;
List<T> mData;
int mItemLayoutId;
public CommonAdapter(Context context, List<T> data, int itemLayoutId):base()
{
this.mContext = context;
mData = data;
mItemLayoutId = itemLayoutId;
}
public override int Count
{
get
{
return mData.Count;
}
}
public override Java.Lang.Object GetItem(int position)
{
return null;
}
public override long GetItemId(int position)
{
return position;
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
var item = mData[position];
ViewHolder viewHolder = ViewHolder.Get(mContext, convertView, parent, mItemLayoutId, position);
convert(viewHolder,mData[position]);
System.Diagnostics.Debug.Write(position);
return viewHolder.GetConvertView();
}
public abstract void convert(ViewHolder helper, T item);
public ViewHolder GetViewHolder(int position, View convertView, ViewGroup parent)
{
return ViewHolder.Get(mContext, convertView, parent, mItemLayoutId, position);
}
}
public class NewsAdapter<T> : CommonAdapter<T>
{
public NewsAdapter(Context context, List<T> data, int resId) : base(context, data, resId)
{
}
public override void convert(ViewHolder helper, T item)
{
NewsViewModel model = (NewsViewModel)Convert.ChangeType(item, typeof(NewsViewModel));
helper.SetText(Resource.Id.tv_news_title, model.Title);
helper.SetText(Resource.Id.tv_news_id, model.NewsID.ToString());
helper.SetText(Resource.Id.tv_news_desc, model.Desc);
}
}
public class Common1Adapter<T> : BaseAdapter
{
Context mContext;
List<T> mData;
int mItemLayoutId;
public delegate View GetViewEvent(int position, View convertView, ViewGroup parent, T item, ViewHolder viewHolder);
public event GetViewEvent OnGetView;
public Common1Adapter(Context context, List<T> data, int itemLayoutId) : base()
{
this.mContext = context;
mData = data;
mItemLayoutId = itemLayoutId;
}
public override int Count
{
get
{
return mData.Count;
}
}
public override Java.Lang.Object GetItem(int position)
{
return null;
}
public override long GetItemId(int position)
{
return position;
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
var item = mData[position];
ViewHolder viewHolder = ViewHolder.Get(mContext, convertView, parent, mItemLayoutId, position);
if (OnGetView != null)
return this.OnGetView(position,convertView,parent,item,viewHolder);
return convertView;
}
}
}
View OnGetView(int position,View convertView,ViewGroup parent,NewsViewModel model,ViewHolder viewHolder)
{
viewHolder.SetText(Resource.Id.tv_news_title, model.Title);
viewHolder.SetText(Resource.Id.tv_news_id, model.NewsID.ToString());
viewHolder.SetText(Resource.Id.tv_news_desc, model.Desc);
return viewHolder.GetConvertView();
}
List<NewsViewModel> list_news = new List<Adaptes.NewsViewModel>() {
new Adaptes.NewsViewModel () { NewsID =1,Title="测试标题124578cdascdas",Desc ="测acdsdas试内内容10c2da4s内容10c2da4s内容10c2da4s容10c2da4sc5das4cdas"},
new Adaptes.NewsViewModel () { NewsID =2,Title="cascascda24578cdascdas",Desc ="测dasc试内容10c2da4s内容10c2da4s内容10c2da4s内容10c2da4sc5das4cdas"},
};
Common1Adapter<NewsViewModel> adapter = new Adaptes.Common1Adapter<Adaptes.NewsViewModel>(this, list_news, Resource.Layout.item_listview_news);
adapter.OnGetView += OnGetView;
lv_news.Adapter = adapter;
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有