通过使用Adapter的getView()方法,实现ViewHolder模式。ViewHolder模式能够重复利用子视图,从而降低内存压力和CPU开销,进而优化显示效果。
以下是示例代码:
public class MyAdapter extends BaseAdapter {
private List mDataList;
private LayoutInflater mInflater;
public MyAdapter(Context context, List dataList) {
mInflater = LayoutInflater.from(context);
mDataList = dataList;
}
@Override
public int getCount() {
return mDataList.size();
}
@Override
public Object getItem(int position) {
return mDataList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.item_layout, parent, false);
holder = new ViewHolder();
holder.textView = (TextView) convertView.findViewById(R.id.tv_item);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
// 设置文本内容
holder.textView.setText(mDataList.get(position));
return convertView;
}
private static class ViewHolder {
TextView textView;
}
}
在使用ListView时,将此适配器与ListView关联起来:
ListView listView = (ListView) findViewById(R.id.lv_list); MyAdapter adapter = new MyAdapter(this, dataList); listView.setAdapter(adapter);
注:dataList是数据源,可以从网络或本地文件中获取。
下一篇:Android小部件重叠