Andriod中的适配器有Adapter、SimpleAdapter和BaseAdapter.而我们今天重点学习的是最后一种BaseAdapter,也是Android最常用的一种了....
第一步:把布局画好,直接写一个ListView列表
<ListViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/listView"></ListView>
第二步:来新建一个Item布局

<ImageViewandroid:layout_width="60dp"android:layout_height="60dp"android:id="@+id/img"android:background="@mipmap/ic_launcher"/><TextViewandroid:gravity="center"android:layout_width="match_parent"android:layout_height="30dp"android:layout_toRightOf="@+id/img"android:id="@+id/tv01"android:text="00"/><TextClockandroid:layout_width="match_parent"android:layout_height="30dp"android:id="@+id/tv02"android:layout_toRightOf="@+id/img"android:layout_below="@+id/tv01"/>
第三步:新建一个ItemBean类
public class ItemBean {//都为公有,可以访问的public int ItemImageId;public String ItemTitle;public String ItemCount;//创建一个构造方法ItemBean(int itemImageId, String itemTitle, String itemCount){ItemImageId=itemImageId;ItemTitle=itemTitle;ItemCount=itemCount;}
}
第四步:新建一个Java类,类名为MyBaseAdapter,继承自BaseAdapter
public class MyBaseAdapter extends BaseAdapter {//继承自BaseAdapter进行导包//数据源与数据适配器进行关联private List<ItemBean> mList;//一个集合,写在TtemBean中private LayoutInflater mInflater;//创建一个构造方法MyBaseAdapter(Context context, List<ItemBean> list){mList=list;mInflater=LayoutInflater.from(context);}//导过包出来的四个方法。@Overridepublic int getCount() {return mList.size();//返回ListVIew所需要显示的数据量}@Overridepublic Object getItem(int i) {return mList.get(i);//集合的位置}@Overridepublic long getItemId(int i) {return i;//id}//最最最重要的方法,这才是主要写逻辑的方法@Overridepublic View getView(int i, View view, ViewGroup viewGroup) {ViewHolder viewHolder;//定义一个类if(view==null){viewHolder=new ViewHolder();//对ViewHolder类进行实例化view=mInflater.inflate(R.layout.item,null);//加载item布局/**第一个参数是要加载的布局*第二个参数一般默认设置为null**///寻找ViewHolder中控件的Id,viewHolder.ImageId= (ImageView) view.findViewById(R.id.img);viewHolder.Title= (TextView) view.findViewById(R.id.tv01);viewHolder.Count= (TextView) view.findViewById(R.id.tv02);//通过setTag将view与ViewHolder绑定view.setTag(viewHolder);}else{//通过ViewHolder对象找到对应的空文件viewHolder= (ViewHolder) view.getTag();}ItemBean bean=mList.get(i);//对ViewHolder类中的控件进行赋值viewHolder.ImageId.setImageResource(bean.ItemImageId);viewHolder.Title.setText(bean.ItemTitle);viewHolder.Count.setText(bean.ItemCount);return view;//返回一个View}/**创建一个内部类ViewHolder* 为了避免findViewById的重复的操作*/class ViewHolder{private ImageView ImageId;private TextView Title;private TextView Count;}}
第五步;最后来到我们期待已久的主JAVA类
##1.初始化控件private ListView listView;private ItemBean itemBean;//对ItemBean类进行初始化##2.在onCreate方法中进行编写List<ItemBean> itemBeen=new ArrayList<>();for(int i=0;i<20;i++){itemBeen.add( new ItemBean(R.mipmap.ic_launcher,"我是标题"+i,"我是内容"+i));}listView= (ListView) findViewById(R.id.listView);//寻找Id/**创建一个适配器MyBaseAdapter*第一个参数:上下文*第二个参数:相当于是一个数据源*/listView.setAdapter(new MyBaseAdapter(this,itemBeen));//将listView与适配器进行绑}
最后我们来看下运行结果
