ListView 适配器BaseAdapter配置

ListView 适配器BaseAdapter配置

ListView需要

  1. 数据(一般为ArrayList数组对象)
  2. 布局文件(用于确定LisetView中每一项显示的布局方式)
  3. 适配器(一般继承自BaseAdapter)
Adapetr 中的主要方法
  1. public int getCount();一般返回ArrayList数组的size()
  2. public Object getItem(int position);用于获取Item对象
  3. public long getItemId(int position);用于获取Item索引值一般返回position
  4. public View getView(int position, View convertView, ViewGroup parent);最关键的一个方法,用于获取每个Item的View,布局用于显示
  5. 一般会自定义一个Adapter继承BaseAdapter并重写构造方法

    private LayoutInflater mInflater;

    public ListNewsAdapter(Context context) {
    mInflater = LayoutInflater.from(context);
    }

getView(int position, View convertView, ViewGroup parent)的三种实现方法

1.文艺方法(最优化,不浪费时间与内存的方法)

1) 自定义一个ViewHolder类

public class ViewHolder {
        public ImageView ivPic;
        public TextView tvTitle;
        public TextView tvDate;
    }

2)使用ViewHolder绑定convertView里面的各个控件,再用convertView的setTag将viewHolder设置到Tag中,以便系统第二次绘制ListView时从Tag中取出。

public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if (convertView == null) {
            holder = new ViewHolder();
            convertView = mInflater.inflate(R.layout.list_news_item, null);
            holder.ivPic = (ImageView) convertView
                    .findViewById(R.id.iv_pic);
            holder.tvTitle = (TextView) convertView
                    .findViewById(R.id.tv_title);
            holder.tvDate = (TextView) convertView
                    .findViewById(R.id.tv_date);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }
        holder.ivPic
                .setBackgroundResource(R.drawable.pic_item_list_default);
        holder.tvTitle.setText("题目");
        holder.tvDate.setText("时间");

        return convertView;
    }
此方法主要优化了两点
  1. 相比于逗比方法利用上ListView的缓存池机制(convertView)
  2. 相比于普通方法利用静态类映射convertView中的各个控件,无需反复findViewById
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值