Android ListView优化 如何省略ViewHolder方法

代码:
public class ViewHolder {
    /**
     * @param view converView
     * @param id 控件的id
     * @return 返回<T extends View>
     */
    public static <T extends View> T get(View view, int id) {
        SparseArray<View> viewHolder = (SparseArray<View>) view.getTag();
        if (null == viewHolder) {
            viewHolder = new SparseArray<View>();
            view.setTag(viewHolder);
        }
        View childView = viewHolder.get(id);
        if (null == childView) {
            childView = view.findViewById(id);
            viewHolder.put(id, childView);

        }
        return (T) childView;
    }

}

在Adapter使用:

   @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        String keyName = getItem(position);
        if (null == convertView) {
            convertView = inflate(R.layout.layout_comm_custom_search_item, null);
        }
        TextView searchKeyName = (TextView)ViewHolder.get(convertView, R.id.search_key_name);
        searchKeyName.setText(keyName);
        return convertView;
    }
时间: 2024-08-10 17:20:45

Android ListView优化 如何省略ViewHolder方法的相关文章

android ListView 多次调用 getView方法

<ListView            android:layout_width="match_parent"            android:layout_height="match_parent"             android:id="@+id/alarm_list"></ListView> ListView 的高度 必须要设置成一个明确的值 或者match_parent  不然就会调用多次getVi

Android ListView优化篇

在我的上一篇博客<Android ListView基础篇>中陈列了ListView和adapter的多种结合方式的基本使用,在本篇文章中将具体讲述如何通过多种方式处理好ListView的优化问题. 在上篇文章的例子中,我们使用了一张图片和一个文本作为每一行的数据,发现效果已经完全达到了,而且没出现什么问题.但如果我们将Item的数量调大,比如调到1000.10000.100000条数据,这个时候当你打开ListView的时候,肯定会不禁感慨"什么鬼,卡机了?!"等了好几秒钟

Android ListView实现不同item的方法和原理分析

ListView实现不同item的方法和原理分析 一问题抛出Listview是android里面的重要组件,用来显示一个竖向列表,这个没有什么问题:但是有个时候列表里面的item不是一样的,如下图,列表里面应该有3种类型的item  1. 头像在左边的气泡Item ,比如”今天下午我就不出来了,...”2. 头像在右边的气泡Item,比如”那就等着我发你好吧”3. 单张图片显示圆角图片item几种Item的风格是完全不同的,那么怎么实现呢? 二实现方法实现的方法我这里可以列举出两种1. 每个It

Android ListView 滚动的N种方法

Android 里面让ListView滚动有N种方法,这儿列举三种: 我的需求是通过按键让Listview滚动起来,当然这些按键不是通过Android标识接口传输过来的,所以不能通过监听按键事件来实现此功能: 一.方法一: 也是最常用的方法: Java代码 listView.setSelection(position); 直接跳转到指定的位置,可以是事件每触发一次,执行一次,形成滚动效果: 二.方法二: Java代码 listView.smoothScrollBy(30, 200); listV

ListView优化的时候ViewHolder的简洁写法

在ListVIew做复用优化的时候,经常会写ViewHolder,还需要很麻烦的去findview,我最讨厌写一堆的这样代码了,今天看到了一个极简的写法,很好用,很简洁啊!!! public static <T extends View> T getAdapterView(View convertView, int id) {        SparseArray<View> viewHolder = (SparseArray<View>) convertView.ge

Android ListView 优化最佳实践

原文地址链接:http://stackvoid.com/list-view-optimization-best-practice-android/ 我有篇博客教大家如何利用 convertView 以及 viewHolder(static) 改善 ListView 卡顿情况:但是在 ListView 加载大量复杂布局和图片的时候,即使使用了 convertView 和 viewHolder,ListView还是卡顿,本文主要讨论了如何在加载复杂 list_item 同时保证 ListView 流

Android listview中使用button解决方法

其实很多东西不是粘贴代码就能解决的,做任何事都要用心做,这样才能晚上睡觉睡得比较踏实. 当你粘贴别人的代码,有时候出bug真的很烦,可是当你明白点原理的时候,能看出问题的实质,解决起来也很得心应手,开始今天的主题.当你的看到这个问题时,你应该知道问题出在哪里了,在listview中使用button(当然不只是button,还有imagebutton等自身响应点击的view),问题出现了,你会发现listview中的item不能点击了,具体是因为什么呢?大多数原因是抢焦点,button抢占了ite

Android性能优化的一些理解

前言 Android性能优化对Android程序的维护和拓展是有很大帮助的,我们知道Android手机不管是内存还是CPU都无法同PC相比,这也就意味着我们必须要谨慎的去使用内存和CPU资源.因为稍稍不注意可能就会引发诸如OOM.ANR.内存泄漏等问题,所以熟悉Android性能优化的几个方法可以有效地提高应用程序的性能,我们可能都能说出一些性能优化的方法,比如布局优化.绘制优化.线程优化等等,但是可能我们会忽视某些小细节,比如布局优化我们可能都知道可以使用< include >来减少布局的层

Android性能优化之Listview(ViewHolder重用机制)

相信大家在很多时候都会用到ListView这个控件,因为确实是用的很多很多,但是有木有遇到过当数据很多很多的时候,往下滑ListView时有时候会卡顿,这就需要我们来优化它了. ListView优化主要有下面几个方面: 1.convertView重用 2.ViewHolder的子View复用 3.缓存数据复用 一.convertView重用 首先讲下ListView的原理:ListView中的每一个Item显示都需要Adapter调用一次getView()的方法,这个方法会传入一个convert