packagecom.example.testlist;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importandroid.os.Bundle;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.ViewGroup;importandroid.widget.AdapterView;importandroid.widget.AdapterView.OnItemClickListener;importandroid.widget.BaseAdapter;importandroid.widget.ImageView;importandroid.widget.ListView;importandroid.widget.TextView;importandroid.widget.Toast;importandroid.app.Activity;importandroid.content.Context;importandroid.graphics.Color;publicclassMainActivityextendsActivityimplementsOnItemClickListener{privateMyAdapteradapter;privateList<Map<String,Object>>list;privateListViewlistView;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);listView=(ListView)findViewById(R.id.listView1);//取得控件listView.setOnItemClickListener(this);list=getData();//获取数据adapter=newMyAdapter(this);listView.setAdapter(adapter);}privateList<Map<String,Object>>getData(){list=newArrayList<Map<String,Object>>();Map<String,Object>map;for(inti=0;i<2;i++){map=newHashMap<String,Object>();map.put("title","title"+i);map.put("img",R.drawable.ic_launcher);list.add(map);}returnlist;}publicvoidadd(Viewv){Map<String,Object>map;map=newHashMap<String,Object>();map.put("title","title"+100);map.put("img",R.drawable.ic_launcher);list.add(map);adapter.notifyDataSetChanged();}//ViewHolder静态类staticclassViewHolder{publicImageViewimg;publicTextViewtitle;}publicclassMyAdapterextendsBaseAdapter{privateLayoutInflatermInflater=null;privateMyAdapter(Contextcontext){//根据context上下文加载布局this.mInflater=LayoutInflater.from(context);}@OverridepublicintgetCount(){//在此适配器中所代表的数据集中的条目数returnlist.size();}@OverridepublicObjectgetItem(intposition){//获取数据集中与指定索引对应的数据项returnposition;}@OverridepubliclonggetItemId(intposition){//获取在列表中与指定索引对应的行idreturnposition;}//获取一个在数据集中指定索引的视图来显示数据@OverridepublicViewgetView(intposition,ViewconvertView,ViewGroupparent){ViewHolderholder=null;//如果缓存convertView为空,则需要创建Viewif(convertView==null){holder=newViewHolder();//根据自定义的Item布局加载布局convertView=mInflater.inflate(R.layout.item,null);holder.title=(TextView)convertView.findViewById(R.id.textView1);holder.img=(ImageView)convertView.findViewById(R.id.p_w_picpathView1);//将设置好的布局保存到缓存中,并将其设置在Tag里,以便后面方便取出TagconvertView.setTag(holder);}else{holder=(ViewHolder)convertView.getTag();}holder.title.setText((String)list.get(position).get("title"));holder.img.setBackgroundResource((Integer)list.get(position).get("img"));returnconvertView;}}@OverridepublicvoidonItemClick(AdapterView<?>arg0,Viewarg1,intarg2,longarg3){Toast.makeText(MainActivity.this,""+arg2,Toast.LENGTH_SHORT).show();}}//item.xml<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal"><ImageViewandroid:id="@+id/p_w_picpathView1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/ic_launcher"/><TextViewandroid:id="@+id/textView1"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="TextView"/></LinearLayout>//activity_main.xml<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity"><ListViewandroid:id="@+id/listView1"android:layout_width="match_parent"android:layout_height="300dp"android:layout_alignParentLeft="true"android:layout_centerVertical="true"></ListView><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignRight="@+id/listView1"android:layout_below="@+id/listView1"android:layout_marginRight="56dp"android:layout_marginTop="16dp"android:onClick="add"android:text="Button"/></RelativeLayout>