1.Activity类
public class BaseAdapterActivity extends Activity {
private ListView listView;
private ListAdapter mAdapter;
private List<Icon> list = new ArrayList<Icon>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_base_adapter);
listView = (ListView) findViewById(R.id.list_view);
list = getData();//创建数据集合
mAdapter = new ListAdapter(this, list);//新建适配器并加载数据源
listView.setAdapter(mAdapter);//视图加载适配器
}
private List<Icon> getData() {
// TODO Auto-generated method stub
for(int i=0;i<5;i++){
list.add(new Icon("xxx"+i, R.drawable.ireader));
}
return list;
}
}
2.自定义Adapter类,继承至BaseAdapter
public class ListAdapter extends BaseAdapter {
private Context context;
private List<Icon> icons;
private LayoutInflater mInflater;
public ListAdapter(Context context, List<Icon> icons) {
super();
this.context = context;
this.icons = icons;
this.mInflater = LayoutInflater.from(context);//根据上下文创建视图容器
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return icons.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return icons.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewContent vc = null;
if(convertView==null){
vc = new ViewContent();
convertView = mInflater.inflate(R.layout.item_view, null);//根据ListView每一项的布局文件实例化View
vc.tv = (TextView) convertView.findViewById(R.id.tv_item);
vc.img = (ImageView) convertView.findViewById(R.id.img_item);
convertView.setTag(vc);
Log.e("tag", "xxx");
}else{
vc = (ViewContent) convertView.getTag();
}
vc.img.setBackgroundResource(icons.get(position).getId());;
vc.tv.setText(icons.get(position).getName());
Log.e("tag", convertView+"");
return convertView;
}
private class ViewContent{
private TextView tv;
private ImageView img;
}
}
3.item_view.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv_item"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/img_item"/>
</LinearLayout>