首页 > 系统 > Android > 正文

优化SimpleAdapter适配器加载效率的方法

2019-12-12 03:04:14
字体:
来源:转载
供稿:网友

在主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适配器加载效率的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表