首页 > 其他 > 详细

关于BaseAdapter在listView中的使用

时间:2015-09-09 13:35:53      阅读:283      评论:0      收藏:0      [点我收藏+]

使用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;
    }
}


关于BaseAdapter在listView中的使用

原文:http://my.oschina.net/u/2250447/blog/503707

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!