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

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

(0)

相关推荐

  • Android 适配器模式应用及设计原理

    适配器模式是一种重要的设计模式,在 Android 中得到了广泛的应用.适配器类似于现实世界里面的插头,通过适配器,我们可以将分属于不同类的两种不同类型的数据整合起来,而不必去根据某一需要增加或者修改类里面的方法. 适配器又分为单向适配器和双向适配器,在 android 中前者使用的比较频繁.比较常见的实现方式是:首先定义一个适配类,内部定义一个私有的需要适配的对象,该类提供一个构造函数,将该对象的一个实例作为参数传入,并在构造函数里面进行初始化,再提供一个公有的方法,返回另外一个需要适配的类所

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

    在主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[]

  • easyui datagrid 大数据加载效率慢,优化解决方法(推荐)

    在使用easyui datagrid途中发现加载数据的效率真的不是一般的差.经测试IE8加载300条数据就感觉明显的慢了,加载2000条数据就另人崩溃用时差不多60秒,就算在google浏览器测试结果也快不了几秒. 平时听闻easyui datagrid效率底下,自己测试才发现真是使人无法忍受. 笔者只好百度,google解决方法,发现一篇文章说改 //1.3.3版本是这样的,其它版本也是这句代码 $(_1e0).html(_1e4.join("")); 改为: $(_1e0)[0].

  • JavaScript性能优化总结之加载与执行

    前言 无论当前 JavaScript 代码是内嵌还是在外链文件中,页面的下载和渲染都必须停下来等待脚本执行完成.JavaScript 执行过程耗时越久,浏览器等待响应用户输入的时间就越长.浏览器在下载和执行脚本时出现阻塞的原因在于,脚本可能会改变页面或 JavaScript 的命名空间,它们对后面页面内容造成影响.一个典型的例子就是在页面中使用document.write(),例如清单 1 清单 1 JavaScript 代码内嵌示例 <html> <head> <title

  • js实现延时加载Flash的方法

    本文实例讲述了js实现延时加载Flash的方法.分享给大家供大家参考,具体如下: 当页面中包含自动播放视频的flash播放器时,flash的流媒体播放会一直不停的下载视频(哪怕你点击了播放暂停/停止也一样在不停下载),这样会影响到页面其它元素的加载. 最简单的优化办法就是让Flash一开始不要播放:当然,你可以修改fla源文件,让视频播放一开始就处于暂停,直到用户点击了播放按钮.但问题是,如果您嵌入的是没有源文件的flash动画,这种路子就走不通了. 思路: 可以先在放置flash的地方,放一张

  • Android开发中Listview动态加载数据的方法示例

    本文实例讲述了Android开发中Listview动态加载数据的方法.分享给大家供大家参考,具体如下: 最近在研究网络数据加载的问题,比如我有几百,甚至上千条数据,这些数据如果一次性全部加载到arraylist,然后再加载到Listview中.我们必然会去单独开线程来做,这样造成的结果就是会出现等待时间很长,用户体验非常不好.我的想法是动态加载数据,第一次加载十条,然后往下面滑动的时候再追加十条,再往下面滑动的时候再去追加,这样大大减少了用户等待的时间,同时给处理数据留下了时间.网上看到了这样一

  • Android编程学习之异步加载图片的方法

    本文实例讲述了Android编程学习之异步加载图片的方法.分享给大家供大家参考,具体如下: 最近在android开发中碰到比较棘手的问题,就是加载图片内存溢出.我开发的是一个新闻应用,应用中用到大量的图片,一个界面中可能会有上百张图片.开发android应用的朋友可能或多或少碰到加载图片内存溢出问题,一般情况下,加载一张大图就会导致内存溢出,同样,加载多张图片内存溢出的概率也很高. 列一下网络上查到的一般做法: 1.使用BitmapFactory.Options对图片进行压缩 2.优化加载图片的

  • Android开发实现ListView异步加载数据的方法详解

    本文实例讲述了Android开发实现ListView异步加载数据的方法.分享给大家供大家参考,具体如下: 1.主Activity public class MainActivity extends Activity { private ListView listView; private ArrayList<Person> persons; private ListAdapter adapter; private Handler handler=null; //xml文件的网络地址 final

  • Android在多种设计下实现懒加载机制的方法

    前言 前段时间在自己的练习项目中想用到懒加载机制,查看了大多数资料只介绍了在 View Pager + Fragment 组合的情况下实现的懒加载,但是现在大多数App更多的是 Fragmentmanager 去管理主页面多个 Fragment 的显示与隐藏,然后主界面的某个或多个 Fragment 里又嵌套了多个 Fragment + ViewPager (详细见下图 ),对于这种情况,适用于第一种的方式是不能直接解决第二种的情况的,所以写下这篇文章,记录一下踩的几个坑,希望对同像我一样的初学

  • PHP中的自动加载操作实现方法详解

    本文实例讲述了PHP中的自动加载操作实现方法.分享给大家供大家参考,具体如下: what is 自动加载? 或许你已经对自动加载有所了解.简单描述一下:自动加载就是我们在new一个class的时候,不需要手动去写require来导入这个class.php文件,程序自动帮我们加载导入进来.这是php5.1.2(好像是)版本新加入一个功能,他解放了程序员的双手,不需要手动写那么多的require,变得有那么点智能的感觉. 自动加载可以说是现代PHP框架的根基,任何牛逼的框架或者架构都会用到它,它发明

  • PHP类的自动加载机制实现方法分析

    本文实例讲述了PHP类的自动加载机制实现方法.分享给大家供大家参考,具体如下: Test1.class.php <?php class Test1 { public static function test() { echo "hello,world!\n"; } } Test2.class.php <?php class Test2 { public static function test() { echo "你好,世界!\n"; } } test.

随机推荐