自定义适配器<加注释>

本文介绍如何在Android中创建自定义的ListView适配器,包括构造方法的定义、数据集大小获取、数据项获取及ID设置等核心方法。通过示例展示了如何使用ViewHolder模式优化性能,以及如何填充视图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**自定义适配器*/
public class SchoolAdapter extends BaseAdapter{
private Context context;
private int resource;
private List<School> list;
//仿照arrayAdapter的构造方法
public SchoolAdapter(Context context,int resource,List<School> list) {
this.context=context;
this.resource=resource;
this.list=list;
}
/**用于返回数据集中数据的个数*/
@Override
public int getCount() {
return list.size();
}
    /**一般返回为当前位置的item对应的数据*/
@Override
public Object getItem(int position) {
return list.get(position);//News
}
//?????
@Override
public long getItemId(int position) {
return position;
}
/**构建adapter layout要显示的item(包饺子)
* 每显示一个item都会调用一次此方法*/
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Log.i("TAG", "convertView="+convertView);
//1.item layout对象(准备饺子皮对象)
//1)借助context找到resource id对应的xml资源
//2)借助xmlpullparser解析xml资源
//3)借助反射构建xml元素对象
//4)inflate方法的返回值为resource资源对应的根元素对象
View v=null;
ViewHolder vh=null;
if(convertView==null){//convertView (可重用的列表项对象)
v=View.inflate(context,resource,null);
vh=new ViewHolder();
vh.logo=(ImageView) v.findViewById(R.id.logo);
vh.titleTv=(TextView) v.findViewById(R.id.titleId);
vh.dateTv=(TextView) v.findViewById(R.id.dateId);
v.setTag(vh);//关联viewholder
}else{
v=convertView;
vh=(ViewHolder)convertView.getTag();
}
//2.item data (饺子馅)
School news=list.get(position);
//3.set item data to item layout(将饺子馅放到饺子皮上包起来)
vh.logo.setImageResource(news.getLogo());
vh.titleTv.setText(news.getName());
vh.dateTv.setText(news.getContent());
return v;//包好的饺子
}
/**每个item view对应一个viewHolder*/
class ViewHolder{
ImageView logo;
TextView titleTv;
TextView dateTv;
}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值