BaseAdapter是基本适配器,功能强大,凡是能用ArrayAdapter和SimpleAdapter解决的,都可以使用BaseAdapter解决。

BaseAdapter是一个抽象类,所以需要自定义一个类来继承BaseAdapter。BaseAdapter中所必须重写的方法的意义:

public int getCount():在此适配器中所代表的数据集中的条目数

public Object getItem(int position):获取数据集中与指定索引对应的数据项

public long getItemId(int position):取在列表中与指定索引对应的行id

public View getView(int position, View convertView, ViewGroup parent):很重要的一个方法。在ListView上显示的数据的逻辑就是写在这个方法里。

BaseAdapterListViewActivity2.java中的内容

packagecom.zzh.day_listview;importjava.util.ArrayList;importjava.util.List;importandroid.app.Activity;importandroid.os.Bundle;importandroid.view.View;importandroid.view.ViewGroup;importandroid.widget.BaseAdapter;importandroid.widget.ImageView;importandroid.widget.ListView;importandroid.widget.TextView;/**实现图片文字混合显示*@authorAdministrator**/publicclassBaseAdapterListViewActivity2extendsActivity{ListViewlv;List<String>list=newArrayList<String>();@OverrideprotectedvoidonCreate(BundlesavedInstanceState){//TODOAuto-generatedmethodstubsuper.onCreate(savedInstanceState);setContentView(R.layout.base_listview);//初始化list集合。for(inti=0;i<20;i++){list.add("item--"+i);}lv=(ListView)findViewById(R.id.listView1);lv.setAdapter(newCustomBaseAdapter());}classCustomBaseAdapterextendsBaseAdapter{@OverridepublicintgetCount()//返回的是集合的大小{returnlist.size();}@OverridepublicObjectgetItem(intposition)//返回的是第一个对象{returnlist.get(position);}@OverridepubliclonggetItemId(intposition){return0;}@OverridepublicViewgetView(intposition,ViewconvertView,ViewGroupparent){ViewHoldervh;//优化if(convertView==null){//因为系统已经默认将R.layout.base_listview_item中的控件添加到了父控件中了,所以写null.convertView=getLayoutInflater().inflate(R.layout.base_listview_item,null);vh=newViewHolder();vh.iv=(ImageView)convertView.findViewById(R.id.p_w_picpathView1);vh.tv=(TextView)convertView.findViewById(R.id.textView1);convertView.setTag(vh);//将vh存起来,以达到代码优化的效果。}else{vh=(ViewHolder)convertView.getTag();}vh.iv.setImageResource(R.drawable.ic_launcher);vh.tv.setText(list.get(position));returnconvertView;}classViewHolder{TextViewtv;ImageViewiv;}}}

base_listview.xml中的内容:

<?xmlversion="1.0"encoding="utf-8"?><RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><ListViewandroid:id="@+id/listView1"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentTop="true"></ListView></RelativeLayout>

base_listview_item.xml中的内容:

<?xmlversion="1.0"encoding="utf-8"?><RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><ImageViewandroid:id="@+id/p_w_picpathView1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_alignParentTop="true"/><TextViewandroid:id="@+id/textView1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:layout_alignParentTop="true"android:text="TextView"/></RelativeLayout>

效果图:

源代码下载链接: