关于BaseAdapter在listView中的使用

使用BaseAdapter首先要重写里面的四个方法:

public int getCount()  

//你的item的个数,也就是你需要展示的listView的列数。一般直接返回一个容器的size()

public Object getItem(int position)

//返回每个Item的数据

public long getItemId(int position)

//返回每个Item的ID,一般直接返回position

public View getView(int position, View convertView, ViewGroup parent)

//最重要的是:重绘视图,调用次数是由第一个方法确定的。最后将视图返回。

里面的参数 position是当前item的id,convertView是当前item的布局。

注意:有些控件必须设置成没有获利焦点与点击。

缓存处理:

    如果listView过长当翻页时每次都需要重新加载控件这样十分浪费内存,就需要做缓存处理,通常的方法是写一个内部类的方式ViewHolder 用来储存已经加载过的控件。

public class PersonAdapter extends BaseAdapter {
    private List<Person> persons;
    private Context context;

    public PersonAdapter(List<Person> persons, Context context) {
        super();
        this.persons = persons;
        this.context = context;
    }

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

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

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if (convertView == null) {
            holder = new ViewHolder();
            /**
             * 获取布局
             */
            convertView = View.inflate(context, R.layout.avtivity_item, null);

            //通过holder找到控件
            holder.name = (TextView) convertView.findViewById(R.id.item_textView_name);
            holder.age = (TextView) convertView.findViewById(R.id.item_textView_age);
            holder.button = (Button) convertView.findViewById(R.id.item_button);

            //设置tag
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        //设置空间属性
        holder.name.setText(persons.get(position).getName());
        holder.age.setText(""+persons.get(position).getAge());

        return convertView;
    }

    class ViewHolder {
        public TextView name;
        public TextView age;
        public Button button;
    }
}


转载于:https://my.oschina.net/mmda/blog/503707

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值