基础的 Adapter

Adapter 的理解

Adapter :适配器,因为 ListView 是一个 View ,不能添加子项,因此在呈现数据的时候就需要某种工具将数据呈现在 ListView 上,而 Adapter 就能充当此角色。常用的 Adapter:ArrayAdapter、BaseAdapter等。


ViewHolder 的理解

要想使用 ListView 就需要编写一个 Adapter 将数据适配到 ListView上,而为了节省资源提高运行效率,一般自定义类 ViewHolder 来减少 findViewById() 的使用以及避免过多地 inflate view,从而实现目标。


Adapter的定义

  1. 继承 BaseAdapter (可在继承的时候指定泛型,扩展使用);
  2. 重写四个基本方法:
    getCount():获取数据的总的数量,返回 int 类型的结果;
    getItem(int position) :获取指定位置的数据,返回该数据;
    getItemId(int position):获取指定位置数据的id,返回该数据的id,一般以数据所在的位置作为它的id;
    getView(int position,View convertView,ViewGroup parent):关键方法,用于确定列表项
  3. 创建 ViewHolder (包含列表项的控件。)

代码展示(部分)

 

public class MyListAdapter extends BaseAdapter // 类定义

 

// 自定义数据集与布局加载器
List<Note> notes;
LayoutInflater inflater;

 

/** 构造方法 */
public MyListAdapter(Context context,List<Note> notes){
    this.notes = notes;
    inflater = LayoutInflater.from(context);
}

 

/** 重写方法 */
@Override
public int getCount(){
    return notes.size();
}
@Override
public Object getItem(int position){
    return notes.get(position);
}
@Override
public long getItemId(int position){
    return position;
}
@Override
public View getView(int position,View convertView,ViewGroup parent){
    ViewHolder viewHolder;
    // 若无可重用的 view 则进行加载
    if(converView == null){
        convertView = inflater.inflate('列表项布局文件',parent,false);
        // 初始化 ViewHolder 方便重用
        viewHolder = new ViewHolder();
        viewHolder.tvTitle = (TextView) convertView.findViewById('id1');
        viewHolder.tvContent = (TextView) convertView.findViewById('id2');
        converView.setTag(viewHolder);
    }else{ // 否则进行重用
        viewHolder = (ViewHolder)convertView.getTag();
    }
    // 获得条目内容对象
    Note note = notes.get(position);
    // 设置内容(Note Bean 需要自定义)
    viewHolder.tvTitle.setText(note.getTitle());
    viewHolder.tvContent.setText(note.getContent());
    return converView;
}

 

/** 创建 ViewHolder */
class ViewHolder{
    TextView tvTitle;
    TextView tvContent;
}

至此,一个比较基础的 Adapter 已经完成,里面包含了 ViewHolder 的基本使用,初学者可以参考次文档进行 Adapter 的编写。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值