在主Activity中:
listview=(ListView)findViewById(R.id.listview);getData();
//为list添加数据overrideSimpleAdapter=new OverrideSimpleAdapter(getContext(),list,R.layout.list_item_layout,
new String[]{"num","word","translates"},
new int[]{R.id.tv_num,R.id.tv_word,R.id.tv_translates});
listview.setAdapter(overrideSimpleAdapter);
重写SimpleAdapter:/**
* Created by KewenC on 2017/1/26.
*/
public class OverrideSimpleAdapter extends SimpleAdapter {
/**
* Constructor
*
* @param context The context where the View associated with this SimpleAdapter is running
* @param data A List of Maps. Each entry in the List corresponds to one row in the list. The
* Maps contain the data for each row, and should include all the entries specified in
* "from"
* @param resource Resource identifier of a view layout that defines the views for this list
* item. The layout file should include at least those named views defined in "to"
* @param from A list of column names that will be added to the Map associated with each
* item.
* @param to The views that should display column in the "from" parameter. These should all be
* TextViews. The first N views in this list are given the values of the first N columns
*/
private LayoutInflater mInflater;
private ArrayList<Map<String, Object>> list;
private int mResource;
private int[] mTo;
private String[] mFrom;
public OverrideSimpleAdapter(Context context, ArrayList<Map<String, Object>> data, int resource, String[] from, int[] to) {
super(context, data, resource, from, to);
this.list=data;
this.mInflater = LayoutInflater.from(context);
this.mResource = resource;
this.mFrom = from;
this.mTo = to;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
// 判断是否缓存
if (convertView == null) {
holder = new ViewHolder();
// 通过LayoutInflater实例化布局
convertView = mInflater.inflate(mResource, null);
// holder.img = (ImageView) convertView.findViewById(R.id.imageView);
holder.num = (TextView) convertView.findViewById(mTo[0]);
holder.word = (TextView) convertView.findViewById(mTo[1]);
holder.translates = (TextView) convertView.findViewById(mTo[2]);
convertView.setTag(holder);
} else {
// 通过tag找到缓存的布局
holder = (ViewHolder) convertView.getTag();
}
// 设置布局中控件要显示的视图
// holder.img.setBackgroundResource(R.drawable.ic_launcher);
holder.num.setText(list.get(position).get(mFrom[0]).toString());// mFrom[0]为“num”Key
holder.word.setText(list.get(position).get(mFrom[1]).toString());
holder.translates.setText(list.get(position).get(mFrom[2]).toString());
return convertView;
}
public final class ViewHolder {
// public ImageView img;
public TextView num;
public TextView word;
public TextView translates;
}
}
以上这篇优化SimpleAdapter适配器加载效率的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持亿速云。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。