安卓开发学习心得-------自定义适配器BaseAdapter基础

    自定义适配器的使用

1.ViewHolder优化baseAdpter的思路

--创建实体类Bean封装数据的类型

--初始化存放实体bean的ArrayList

--创建ViewHolder类,创建布局映射关系

--getView()方法中,判断convertView是否存在,为空则创建,并设置tag,否则通过tag来去除ViewHolder

--ViewHolder中的控件设置数据

2.baseAdpater类的编写

--声明两个变量:数据List和布局加载LayoutInflater
private List data;
private LayoutInflater mInflater;
--构造器方法的参数为上下文以及数据List,上下文参数用于布局的加载
 public baseadapter(Context context,List data){
        this.data=data;
        mInflater=LayoutInflater.from(context);
    }
--getCount(),getItem(),getItemId()分别为数据的大小,item以及id
    @Override
    public int getCount() {
        return data.size();
    }

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

    @Override
    public long getItemId(int position) {
        return position;
    }
--ViewHolder类的编写,定义数据显示的元素
class ViewHolder{
        public ImageView iamge;
        public TextView tv;
    }
--getView类的编写,判断convertView是否存在,为空则创建,并设置tag,否则通过tag来去除ViewHolder,
最后ViewHolder中的控件设置数据
@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder viewHolder=null;
        if(convertView == null){
            viewHolder=new ViewHolder();
            convertView=mInflater.inflate(R.layout.item,parent,false);
            viewHolder.iamge= (ImageView) convertView.findViewById(R.id.id_image);
            viewHolder.tv= (TextView) convertView.findViewById(R.id.id_tv );
            convertView.setTag(viewHolder);


        }else{
                viewHolder= (ViewHolder) convertView.getTag();
        }
        viewHolder.iamge.setImageResource(R.mipmap.ic_launcher);
        viewHolder.tv.setText(data.get(position));
        return convertView;
    }






 
   

你可能感兴趣的:(安卓开发学习心得-------自定义适配器BaseAdapter基础)