使用自定义的Adapter
关键字 UI XML Adapter ListView
日期 2010/6/4
关于性能使用convertView 回收试图,性能提高200%
使用ViewHolder 性能再提高50%
继承BaseAdapter 类 实现其中的方法,注意getView() ,其中是最重要的一个重写方法。
其中使用LayoutInflater 将一个xml 解释为一个View ,然后将传来的数据存入View 中。
可以使用itemAdapter .notifyDataSetChanged();通知Adapter 内容已经改变 进行刷新
package com.shinestudio.hexcoversion.adapter;
import java.util.List;
import java.util.Map;
public class ItemAdapter extends BaseAdapter {
static class ItemViewHolder {
TextView t_ori;
TextView t_bin;
TextView t_dec;
TextView t_hex;
}
private static LayoutInflater inflater;
private String[] tag;
private List<Map<String, String>> data;
public ItemAdapter(Context context, String[] tag, List<Map<String, String>> data) {
inflater = LayoutInflater.from(context);
this.tag = tag;
this.data = data;
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int position) {
return data.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ItemViewHolder holder;
if (convertView == null) {
convertView = inflater.inflate(R.layout.listitem, null);
holder = new ItemViewHolder();
holder.t_ori = (TextView) convertView.findViewById(R.id.tv_ori);
holder.t_bin = (TextView) convertView.findViewById(R.id.tv_bin);
holder.t_dec = (TextView) convertView.findViewById(R.id.tv_dec);
holder.t_hex = (TextView) convertView.findViewById(R.id.tv_hex);
convertView.setTag(holder);
} else {
holder = (ItemViewHolder) convertView.getTag();
}
holder.t_ori.setText((String) data.get(position).get(tag[0]));
holder.t_bin.setText((String) data.get(position).get(tag[1]));
holder.t_dec.setText((String) data.get(position).get(tag[2]));
holder.t_hex.setText((String) data.get(position).get(tag[3]));
return convertView;
}
}