BaseAdapter的使用

来源:互联网 发布:gulp 压缩js css 编辑:程序博客网 时间:2024/05/21 09:35
package com.example.baseadaptertest;import java.util.List;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;/** * ViewHolder 优化BaseAdapter的思路 * 1、创建Item类,用于封装数据 * 2、在构造方法中初始化用于映射的数据List * 3、创建ViewHolder,创建布局映射关系 * 4、判断convertView是否为null,若为空,则设置tag,否则通过tag取出ViewHolder * 5、给ViewHolder中的控件赋值设置数据。 */public class MyAdapter extends BaseAdapter {    private List<Item> mList;    private LayoutInflater inflater;    /*     * 内部类     */    class ViewHolder {        public ImageView imgView;        public TextView title;        public TextView content;    }    /**     * 这样就把数据源和适配器关联起来了     * @param itemList     */    public MyAdapter(List<Item> itemList , Context context) {        // TODO Auto-generated constructor stub        mList = itemList;        inflater = LayoutInflater.from(context);    }    @Override    public int getCount() {        // TODO Auto-generated method stub        return mList.size();    }    @Override    public Object getItem(int position) {        // TODO Auto-generated method stub        return mList.get(position);    }    @Override    public long getItemId(int position) {        // TODO Auto-generated method stub        return position;    }    /**     * 逗比式,么有利用到listview的缓存特征     */    /*public View getView(int position, View convertView, ViewGroup parent) {        // TODO Auto-generated method stub        View view = inflater.inflate(R.layout.lv_item, null);        ImageView imgView = (ImageView) view.findViewById(R.id.img);        TextView title = (TextView) view.findViewById(R.id.title);        TextView content = (TextView) view.findViewById(R.id.content);        Item item = (Item) getItem(position);        imgView.setImageResource(item.itemImageID);        title.setText(item.itemTitle);        content.setText(item.itemContent);        return view;    }    */    /**普通式     * 如果没有缓存才创建新的View,但是findviewbyid事很费资源的,当视图树很复杂的时候,消耗的时间是很客观地     */    /*    @Override    public View getView(int position, View convertView, ViewGroup parent) {        // TODO Auto-generated method stub        if(convertView == null){            convertView = inflater.inflate(R.layout.lv_item, null);//如果没有缓存才创建新的View,但是findviewbyid事很费资源的,当视图树很复杂的时候,消耗的时间是很客观地        }        ImageView imgView = (ImageView) convertView.findViewById(R.id.img);        TextView title = (TextView) convertView.findViewById(R.id.title);        TextView content = (TextView) convertView.findViewById(R.id.content);        Item item = (Item) getItem(position);        imgView.setImageResource(item.itemImageID);        title.setText(item.itemTitle);        content.setText(item.itemContent);        return convertView;    }*/    @Override    public View getView(int position, View convertView, ViewGroup parent) {        // TODO Auto-generated method stub        ViewHolder viewHolder = new ViewHolder();        if(convertView == null){            viewHolder = new ViewHolder();            convertView = inflater.inflate(R.layout.lv_item, null);            /**             * 用ViewHolder来储存convertView的空的子View,最后关联到convertView             */            ImageView imgView = (ImageView) convertView.findViewById(R.id.img);            viewHolder.imgView = imgView;            TextView title = (TextView) convertView.findViewById(R.id.title);            viewHolder.title = title;            TextView content = (TextView) convertView.findViewById(R.id.content);            viewHolder.content = content;            convertView.setTag(viewHolder);//关联一下        }        else{            viewHolder = (ViewHolder) convertView.getTag();//通过关联,赋值一下        }        Item item = (Item) getItem(position);        /**         * 通过给viewHolder.xxx赋值的方式,来给convertView赋值。         * 和普通模式相比,少了每次都要xxxView = convertView.findViewById(xxx),但多了储存空间,空间换时间         */        viewHolder.imgView.setImageResource(item.itemImageID);        viewHolder.title.setText(item.itemTitle);        viewHolder.content.setText(item.itemContent);        return convertView;    }}
0 0
原创粉丝点击