Android中的ListView及其优化(待续)

Adapter代码

public class SpotsAdapter extends BaseAdapter{
    private List<SpotsModel> mList;
    private LayoutInflater inflater; 
    public SpotsAdapter(Context context,List<SpotsModel> list){ 
        this.mList = list;
        inflater = LayoutInflater.from(context);//传入context对象对其进行初始化
    }

    @Override
    public int getCount() {
        return mList.size();
    }

    @Override
    public Object getItem(int position) {
        return mList.get(position);
    }

    @Override
    public long getItemId(int id) {
        return id;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder; 
        if (convertView == null){
            convertView = inflater.inflate(R.layout.spotslist_item, null);
            holder = new ViewHolder();  //暂时存储ViewHolder中预定义的属性,类似于一个结构体
            //下面几行将layout中的控件定义到这几个属性上
            holder.img = (ImageView) convertView.findViewById(R.id.iv_img);
            holder.name = (TextView) convertView.findViewById(R.id.txt_spotname);
            holder.addr = (TextView) convertView.findViewById(R.id.txt_spotaddress); 
            convertView.setTag(holder);  //将holder储存的各属性绑定到convertView
        }
        else{
            holder = (ViewHolder) convertView.getTag();
        }
        //下面几行是对各字段赋值
        holder.img.setImageResource(Util.getDrawableResourceID (mList.get(position).getSpotImg()));
        holder.name.setText(mList.get(position).getSpotName());
        holder.addr.setText(mList.get(position).getSpotAddr());
        return convertView;
    }

    static class ViewHolder{
        ImageView img;
        TextView name;
        TextView addr;
    }

}

常见的优化手段:

  • 重用ConvertView
  • ViewHolder
  • notifyDatasetChanged()
  • 分批分页加载重用ConvertView
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值