BaseAdapter用法详解

来源:互联网 发布:java jdk1.7 32位下载 编辑:程序博客网 时间:2024/06/11 15:29

一,ListView与BaseAdapter

Data Source---Adapter---ListView

数据通过Adapter与ListView相互交互

二,BaseAdapter的基本结构(核心所在)

public int getCount(){
return list.size();
}
public Object getItem(int position){
return list.get(position);
}
public long getItemId(int position){return position;}
public View getView(int position, View convertView, ViewGroup parent)

注:方法的实现应根据自己创建的Adapter对象而实现,应该在第三步后面,由于比较简单,这里为了简便,我就直接实现了(List对象见下面所示)其中最重要的方法是实现getView对象

,步骤

1,创建XML(layout)文件(在下面的例子中是item.xml文件)

2,创建数据源(Java类)

public class ItemBean(){...}

3,创建适配器(Java类)继承BaseAdapter

public class MyAdapter extends BaseAdapter(){...}

将数据源与适配器关联(在适配器的构造方法中)

private List<ItemBean> list;
public MyAdapter(List<ItemBean> list) { this.list = list;}
实现getView方法:

 使用ViewHoder方法(例子如下):

public View getView(int position, View convertView, ViewGroup parent) {    //绑定ViewHoder与convertView    //使用convertView实现ListView显示与缓存机制    //ListView的显示与缓存机制核心内容:需要才显示,显示完毕后被回收到缓存    ViewHoder viewHoder;    if(convertView==null){        viewHoder=new ViewHoder();        convertView=inflater.inflate(R.layout.item,null);        //item布局文件中控件        viewHoder.imageView= (ImageView) convertView.findViewById(R.id.ivImage);        viewHoder.tvTitle= (TextView) convertView.findViewById(R.id.tvTitle);        viewHoder.tvContent= (TextView) convertView.findViewById(R.id.tvContent);        convertView.setTag(viewHoder);    }else{        viewHoder= (ViewHoder) convertView.getTag();    }    //实现传值    ItemBean bean=list.get(position);    viewHoder.imageView.setImageResource(bean.ItemImageResid);    viewHoder.tvTitle.setText(bean.ItemTitle);    viewHoder.tvContent.setText(bean.ItemContent);    return convertView;}//避免重复的findViewById 节约时间class ViewHoder{    public ImageView imageView;    public TextView tvTitle;    public TextView tvContent;}
四,实现了上述方法后,在主函数中绑定Adapter与ListView

List<ItemBean> beanList=new ArrayList<>();for (int i = 0; i < 10; i++) {    beanList.add(new ItemBean(R.mipmap.icon,"我是标题"+i,"我是内容"+i));}ListView listview= (ListView) findViewById(R.id.ivMain);listview.setAdapter(new MyAdapter(this,beanList));
注:BaseAdapter的用法基本如上述,内容整理的比较乱,更多可以访问慕客网

Android必学-BaseAdapter的使用与优化

这节课程,在里面老师有更加详细的讲解。



0 0
原创粉丝点击