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

发布时间 - 2026-01-11 00:42:15    点击率:

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


# simpleadapter适配器  # Android 适配器模式应用及设计原理  # 给大家  # 希望能  # 重写  # 这篇  # 小编  # 大家多多  # 判断是否  # 加载  # extends  # public  # param  # Constructor  # SimpleAdapter  # tv_word  # setAdapter  # tv_translates  # KewenC  # Created  # context  # entries 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  Python自然语言搜索引擎项目教程_倒排索引查询优化案例  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南  成都网站制作公司哪家好,四川省职工服务网是做什么用?  如何快速搭建虚拟主机网站?新手必看指南  Firefox Developer Edition开发者版本入口  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  无锡营销型网站制作公司,无锡网选车牌流程?  Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  LinuxShell函数封装方法_脚本复用设计思路【教程】  海南网站制作公司有哪些,海口网是哪家的?  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  如何在云主机快速搭建网站站点?  Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】  简历在线制作网站免费版,如何创建个人简历?  如何在建站之星绑定自定义域名?  如何自定义建站之星网站的导航菜单样式?  JavaScript模板引擎Template.js使用详解  Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】  如何快速完成中国万网建站详细流程?  如何彻底卸载建站之星软件?  高端网站建设与定制开发一站式解决方案 中企动力  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)  进行网站优化必须要坚持的四大原则  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】  php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】  Laravel如何创建和注册中间件_Laravel中间件编写与应用流程  javascript基本数据类型及类型检测常用方法小结  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  javascript中的数组方法有哪些_如何利用数组方法简化数据处理  Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南  如何基于云服务器快速搭建个人网站?  如何基于云服务器快速搭建网站及云盘系统?  手机软键盘弹出时影响布局的解决方法  HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】  EditPlus中的正则表达式实战(6)  Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  如何在云主机上快速搭建网站?  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  C语言设计一个闪闪的圣诞树  如何用PHP快速搭建高效网站?分步指南  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  如何快速配置高效服务器建站软件?  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  php 三元运算符实例详细介绍