`
我要阳光
  • 浏览: 60236 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

高效 list adapter

 
阅读更多
Android api demo里面有一个编写高效list adapter的demo,里面写了建议的两条高效原则

1. 在getView方法中,重复利用 convertView,convertView是旧的View,建议先判断是否为空,如果不为空,可以修改其内容来显示新的row。

public View getView(int position, View convertView, ViewGroup parent) {
            SpeechView sv;
            if (convertView == null) {
                sv = new SpeechView(mContext, mTitles[position],
                        mDialogue[position]);
            } else {
                sv = (SpeechView) convertView;
                sv.setTitle(mTitles[position]);
                sv.setDialogue(mDialogue[position]);
            }

            return sv;
        }


2. 在getView方法中,利用ViewHolder来保存与convertView相关联的子View,避免调用 findViewById方法,以提高效率

public View getView(int position, View convertView, ViewGroup parent) {
            // A ViewHolder keeps references to children views to avoid unneccessary calls
            // to findViewById() on each row.
            ViewHolder holder;

            // When convertView is not null, we can reuse it directly, there is no need
            // to reinflate it. We only inflate a new View when the convertView supplied
            // by ListView is null.
            if (convertView == null) {
                convertView = mInflater.inflate(R.layout.list_item_icon_text, null);

                // Creates a ViewHolder and store references to the two children views
                // we want to bind data to.
                holder = new ViewHolder();
                holder.text = (TextView) convertView.findViewById(R.id.text);
                holder.icon = (ImageView) convertView.findViewById(R.id.icon);

                convertView.setTag(holder);
            } else {
                // Get the ViewHolder back to get fast access to the TextView
                // and the ImageView.
                holder = (ViewHolder) convertView.getTag();
            }

            holder.text.setText(DATA[position]);
            holder.icon.setImageBitmap((position & 1) == 1 ? mIcon1 : mIcon2);

            return convertView;
        }
分享到:
评论

相关推荐

    易用高效的adapter库.zip

    《易用高效的Adapter库——FastAdapter深度解析》 在Android应用开发中,Adapter是一个不可或缺的组件,它连接数据源与视图,使数据能够展示在ListView、RecyclerView等控件上。而FastAdapter库,作为一款防弹、...

    android recyleview list adapter chat ui测试

    在Android开发中,RecyclerView是实现复杂布局和高效数据展示的关键组件。RecyclerView.ListAdapter是RecyclerView的适配器之一,专门设计用于列表样式的视图管理。本文将深入探讨如何在聊天应用UI页面中使用...

    android开发Adapter详解

    ### Android开发Adapter详解...通过理解Adapter的不同类型及其使用方式,开发者可以更好地构建高效且用户友好的应用程序。无论是对于初学者还是经验丰富的开发者来说,深入学习Adapter都是提升开发技能的关键步骤之一。

    Android listview与adapter用法

    在Android开发中,ListView是展示大量数据的一种常见方式,而Adapter则是实现ListView数据绑定的关键组件。...熟练掌握Adapter的使用,可以帮助我们高效地构建用户界面,尤其是处理大量数据的列表展示。

    最简洁的adapter

    在Android开发中,Adapter是一个非常重要的组件,它用于在数据集和UI视图之间建立桥梁,使得数据可以被适配并展示在ListView、GridView、RecyclerView等控件中。本篇文章将详细探讨“最简洁的Adapter”及其在Android...

    可重用的自定义adapter

    在`LvAdapter`这个项目中,我们可以期待看到上述概念的实现,这将是一个实用的学习资源,帮助理解如何创建高效、可重用的自定义Adapter。对于需要从Eclipse迁移到Android Studio的开发者,主要工作在于转换项目结构...

    Android简单使用ListView和Adapter

    CustomAdapter adapter = new CustomAdapter(this, listData); listView.setAdapter(adapter); Button deleteButton = findViewById(R.id.delete_button); deleteButton.setOnClickListener(new View....

    android Adapter教程

    ### Android Adapter 深度解析及应用实例 #### 一、Adapter 在 Android 开发中的核心作用 在 Android 开发中,Adapter 扮演着...掌握不同类型的 Adapter 及其适用场景,对于构建高效、美观的 Android 应用至关重要。

    listview通用adapter

    通用Adapter是ListView高效运作的关键,它允许我们以一种灵活的方式绑定不同类型的数据显示在ListView的各个项中。本教程将详细介绍`listview`中的`通用adapter`,以及如何通过方法封装实现调用的便捷与简单。 首先...

    简化adapter 几行代码解决一切

    标题“简化adapter 几行代码解决一切”表明我们将探讨如何通过精简的代码实现一个高效且实用的Adapter。描述中提到,只需几行代码就可以实现通常需要编写的方法,如`getCount`、`getItemId`和`getItem`,这通常是...

    万能Adapter

    总结来说,万能Adapter是一种高效且灵活的数据展示工具,它能够将各种类型的数据适配到列表视图中。通过理解和掌握万能Adapter的工作原理和实现方式,开发者可以更好地进行Android应用的UI开发,提升用户体验。

    RecyclerView通用Adapter

    protected List<T> mData; // 其他抽象方法和接口 } ``` 2. **定义泛型ViewHolder**:创建一个抽象的`BaseViewHolder`类,作为所有ViewHolder的基类,用于处理视图的初始化和绑定数据。 ```java public ...

    功能强大的adapter

    首先,Adapter是Android系统中的适配器模式实现,主要用于将数据源(如数组、List或其他集合)绑定到UI组件,如ListView、GridView或RecyclerView等。通过Adapter,开发者可以将数据转化为视图元素,并展示在用户...

    RecycleView通用Adapter(Kotlin语言)

    在Android开发中,RecyclerView是一个非常重要的组件,它用于展示可滚动的列表,具有高效的数据管理和流畅的用户体验。本文将深入探讨使用Kotlin语言编写的RecyclerView通用Adapter,以及如何调用和应用这个Adapter...

    最简单listview + adapter

    它的高效性和可滚动性使得它在各种场景下都十分实用,如联系人列表、应用列表等。本教程将针对初学者,讲解如何使用ListView和Adapter来构建一个简单的列表。 首先,我们需要了解ListView的基本结构。ListView是一...

    android adapter 开发总结

    在Android开发中,Adapter是一个至关重要的组件,它用于在数据模型和用户界面之间建立桥梁,使得数据能够适配并...在实际项目中,根据具体需求选择合适的Adapter类型,或创建自定义Adapter,都是实现高效开发的关键。

    Android studio异步数据加载ListView+Adapter+AsyncTask

    adapter = new CustomAdapter(this, R.layout.list_item, new ArrayList()); listView.setAdapter(adapter); } ``` 3. 在doInBackground()方法中,执行数据加载任务,这一步应该在后台线程完成,避免阻塞UI。 4....

    Android之Adapter用法总结

    在Android开发中,Adapter是一个至关重要的组件,它作为数据源和UI展示之间的桥梁,使得数据能够正确地在各种视图组件(如ListView、...理解并熟练运用各种Adapter,能帮助开发者构建出更加丰富和高效的用户界面。

    Google官网上的一个Adapter优化的范例

    通过学习这个范例,开发者可以掌握ViewHolder模式的使用,理解ListActivity的特性,以及如何编写高效、可维护的Adapter。配合`introduce.doc`文档和`GoogleViewHolderAdapter`代码,能更深入地理解这个优化示例的...

    adapter封装文件.rar

    Adapter是Android开发中的重要组件,通过封装Adapter,我们可以实现数据和视图的高效绑定,同时提高代码的可读性和可维护性。理解Adapter的工作原理和封装技巧,对于提升Android应用的用户体验和开发效率具有重要...

Global site tag (gtag.js) - Google Analytics