一.首先显示每条数据的XML布局文件
<LinearLayout
xmlns:android ="http://scheemas.android.com/apk/res/android"
android:orientation="horizontal">
<ImageView android:id="@+id/icon"
android:layout_width="48dip"
android:layout_height="48dip"/>
<TextView android:id="@+id/text"
android:layout_gravity="center_vertical"
android:layout_width="0dip"
android:layout_weight="1.0"
android:layout_height="wrap_context"/>
</LinearLayout>
二.方法
1.最简单的方法,最慢最不实用
public View getView(int pos,View convertView,ViewGroup parent){
View item = mInflater.inflate(R.layout.list_item,null);
((TextView) item.findViewById(R.id.text)).setText(DATA[pos]);
((ImageView) item.findViewById(R.id.icon)).setImageBitmap((pos&1)==1?mIcon1:mIcon2);
return item;
}
2. 利用convertView回收视图,效率提高20%
public View getView(int pos, View convertView,ViewGroup parent){
if (convertView == null) {
convertView = mInflater.inflate(R.layout.list_item, null);
}
((TextView) convertView.findViewById(R.id.text)).setText(DATA[pos]);
((ImageView) convertView.findViewButId(R.id.icon)).setImageBitmap((pos & 1) == 1 ? mIcon1 : mIcon2);
return convertView;
}
3.使用ViewHolder模式,效率再提高50%
static class ViewHolder{
TextView text;
ImageView icon;
}
public View getView(int pos,View convertView,ViewGroup parent){
ViewHolder holder;
if(convertView == null){
convertView = mInflater.inflate(R.layout.list_item,null);
holder = new ViewHolder();
holder.text = (TextView) convertView.findViewById(R.id.text);
holder.icon= (ImageView) convertView.findViewById(R.id.icon);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
holder.text.setText(DATA[pos]);
holder.icon.setImageBitmap((pos&1)==1?mIcon1:mIcon2);
return convertView;
}