ListView重写Adapter优化上下滚动响应速度
主要是重写Adapter的getView方法,执行时不用每次都创建一次对象。
// Music list adapter
public static class MusicListAdapter extends SimpleAdapter {
private LayoutInflater mInflater;
private List<? extends Map<String, ?>> mList;
public MusicListAdapter(Context context, List<? extends Map<String, ?>> data,
int resource, String\[\] from, int\[\] to)
{
super(context, data, resource, from, to);
mInflater = LayoutInflater.from(context);
mList = data;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return super.getCount();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return super.getItem(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return super.getItemId(position);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// 优化list速度
ViewHolder holder = null;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.list_items, null);
holder = new ViewHolder();
holder.ItemTitle = (TextView) convertView.findViewById(R.id.ItemTitle);
holder.ItemSinger = (TextView) convertView.findViewById(R.id.ItemSinger);
holder.ItemTime = (TextView) convertView.findViewById(R.id.ItemTime);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.ItemTitle.setText((String)mList.get(position).get("ItemTitle"));
holder.ItemSinger.setText((String)mList.get(position).get("ItemSinger"));
holder.ItemTime.setText((String)mList.get(position).get("ItemTime"));
return convertView;
}
static class ViewHolder {
TextView ItemTitle;
TextView ItemSinger;
TextView ItemTime;
}
}