Android ViewHolder

ViewHolder不是Android的开发API,而是一种设计方法,就是设计个静态类,缓存一下,省得Listview更新的时候,还要重新操作。

 @Override
    public View getView(int position, View contextvView, ViewGroup parent) {
        // TODO Auto-generated method stub
        ViewHolder holder;
        if (contextvView == null) {
            // 需要布局加载器 加载一个视图文件
            // 加载已经写好的布局文件 为每个item显示视图
            holder = new ViewHolder();//实例化内部类
            contextvView = layoutInflater.inflate(R.layout.listview_item, null);//视图
            // 通过findview 找到控件 内部类 存贮
            holder.mTime = (TextView) contextvView
                    .findViewById(R.id.item_title);
            holder.mTitle = (TextView) contextvView
                    .findViewById(R.id.textView1);
            contextvView.setTag(holder);// 将view类设置成视图的tag对象    绑定值到contextvView

        } else {
            holder = (ViewHolder) contextvView.getTag();// 再次查找到布局中的每个控件
        }
        String nTime=listdate.get(position).getMtime();
        String nTitle=listdate.get(position).getMtitle();
        holder.mTime.setText(nTime);//初始化控件
        holder.mTitle.setText(nTitle);

        return contextvView;//返回视图
    }

    // 内部类 存贮findview 找到的控件 暂时存贮控件
    class ViewHolder {
        // 添加属性
        TextView mTime;
        TextView mTitle;

    }

//     ViewHolder 模式, 效率提高 50%

时间: 2024-08-03 07:26:53

Android ViewHolder的相关文章

Android ViewHolder 案例

ViewHolder不是Android的开发API,而是一种设计方法,就是设计个静态类,缓存一下,省得Listview更新的时候,还要重新操作.     public View getView(int pos, View convertView, ViewGroup parent){ ViewHolder holder; if (convertView == null) { convertView = mInflater.inflate(R.layout.list_item, null); ho

Android - ViewHolder优化ListView

在Android开发中, ListView是重要的组件, 它以列表形式根据数据的长度, 自适应展示具体内容. 用户可以自由的定义ListView每一列的布局. 当listview有大量数据需要加载的时候, 会占据内存, 影响性能. 这时候就需要按需填充, 并重新使用View, 减少对象的创建. ListView加载数据都是在getView()方法中进行. 同时, 需要自定义ListView重写ListAdapter: 如BaseAdapter, SimpleAdapter, CursorAdap

Android——ViewHolder的作用与用法

转载至:https://www.cnblogs.com/wugu-ren/p/6106379.html ViewHolder通常出现在适配器里,为的是listview滚动的时候快速设置值,而不必每次都重新创建很多对象,从而提升性能.在android开发中Listview是一个很重要的组件,它以列表的形式根据数据的长自适应展示具体内容,用户可以自由的定义listview每一列的布局,但当listview有大量的数据需要加载的时候,会占据大量内存,影响性能,这时候就需要按需填充并重新使用view来减

android:ViewHolder模式

[java] ViewHolder holder = null; if(convertView == null){ convertView = mInflater.inflate(R.layout.xxx null); holder = new ViewHolder(); holder.tvXXX = (TextView)findViewById(R.id.xxx); //...一连串的findViewById } else{ holder = (ViewHolder) convertView.

Android开发中常用的ListView列表的优化方式ViewHolder

在Android开发中难免会遇到大量的数据加载到ListView中进行显示, 然后其中最重要的数据传递桥梁Adapter适配器是常用的,随着市场的需 求变化ListView'条目中的内容是越来越多这就需要程序员来自定义适配器, 而关键的就是适配器的优化问题,适配器没有优化好往往就会造成OOM (内存溢出)或者是滑动卡顿之类的问题,接下来我就给大家介绍一种常 用的Adapter优化方法 1 /** 2 * list View的适配器 3 */ 4 class Adapter extends Bas

android中ViewHolder通用简洁写法

public class ViewHolder {     // I added a generic return type to reduce the casting noise in client code     @SuppressWarnings("unchecked")     public static <T extends View> T get(View view, int id) {         SparseArray<View> view

Android点滴---ViewHolder通用,优雅写法

近期在做项目时,又要写 ViewHolder. 突然想到网上看看有没什么好的写法! 不知道你是不是也烦透了写那些没有技术含量的ViewHolder 看看这些.也许会有收获! 然后就找到了以下两篇文章(感谢分享! ): ViewHolder超简洁写法 点击跳转 优雅的使用ViewHolder 点击跳转 然后自己整理的了, 保存起来.省的忘记.顺便分享一下! 直接贴代码了: 第一种: import android.util.SparseArray; import android.view.View;

Android应用系列:值得收藏的ViewHolder工具类实现

前言 在开发APP的过程中,攻城狮少不了要跟ListView.GridView这些组件眉来眼去,暗送几波秋波.自然原生态美人BaseAdapter更是程序员的最爱,有了它,我们想怎么干就能怎么干,嘿嘿,你懂的O(∩_∩)O哈哈~ 但是,每次写一个BaseAdapter,我们都很自觉的给他写一个ViewHolder,一两个还好,万一应用程序中有数不清的ListView,呵呵~你妹!千篇一律,看得都审美疲劳.作为最伟大的第二十二世纪的程序员们,脱掉.搞上永远是我们最真挚的追求,所以我们要怎么将Vie

Android BaseAdapter和ViewHolder 优化 解决ListView的item抢焦点问题和item错乱问题

首先赞下hyman大神 曾经仅仅是简单的重写个BaseAdapter,将getView方法保持抽象.而ViewHolder没有抽象过. .. ViewHolder (用了一个集合+泛型管理存取view) /** * author : stone * email : [email protected] * time : 15/7/24 14 27 */ public class StoneViewHolder { private int mPosition; private View mConve