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库——FastAdapter深度解析》 在Android应用开发中,Adapter是一个不可或缺的组件,它连接数据源与视图,使数据能够展示在ListView、RecyclerView等控件上。而FastAdapter库,作为一款防弹、...
在Android开发中,RecyclerView是实现复杂布局和高效数据展示的关键组件。RecyclerView.ListAdapter是RecyclerView的适配器之一,专门设计用于列表样式的视图管理。本文将深入探讨如何在聊天应用UI页面中使用...
### Android开发Adapter详解...通过理解Adapter的不同类型及其使用方式,开发者可以更好地构建高效且用户友好的应用程序。无论是对于初学者还是经验丰富的开发者来说,深入学习Adapter都是提升开发技能的关键步骤之一。
在Android开发中,ListView是展示大量数据的一种常见方式,而Adapter则是实现ListView数据绑定的关键组件。...熟练掌握Adapter的使用,可以帮助我们高效地构建用户界面,尤其是处理大量数据的列表展示。
在Android开发中,Adapter是一个非常重要的组件,它用于在数据集和UI视图之间建立桥梁,使得数据可以被适配并展示在ListView、GridView、RecyclerView等控件中。本篇文章将详细探讨“最简洁的Adapter”及其在Android...
在`LvAdapter`这个项目中,我们可以期待看到上述概念的实现,这将是一个实用的学习资源,帮助理解如何创建高效、可重用的自定义Adapter。对于需要从Eclipse迁移到Android Studio的开发者,主要工作在于转换项目结构...
CustomAdapter adapter = new CustomAdapter(this, listData); listView.setAdapter(adapter); Button deleteButton = findViewById(R.id.delete_button); deleteButton.setOnClickListener(new View....
通用Adapter是ListView高效运作的关键,它允许我们以一种灵活的方式绑定不同类型的数据显示在ListView的各个项中。本教程将详细介绍`listview`中的`通用adapter`,以及如何通过方法封装实现调用的便捷与简单。 首先...
标题“简化adapter 几行代码解决一切”表明我们将探讨如何通过精简的代码实现一个高效且实用的Adapter。描述中提到,只需几行代码就可以实现通常需要编写的方法,如`getCount`、`getItemId`和`getItem`,这通常是...
总结来说,万能Adapter是一种高效且灵活的数据展示工具,它能够将各种类型的数据适配到列表视图中。通过理解和掌握万能Adapter的工作原理和实现方式,开发者可以更好地进行Android应用的UI开发,提升用户体验。
protected List<T> mData; // 其他抽象方法和接口 } ``` 2. **定义泛型ViewHolder**:创建一个抽象的`BaseViewHolder`类,作为所有ViewHolder的基类,用于处理视图的初始化和绑定数据。 ```java public ...
首先,Adapter是Android系统中的适配器模式实现,主要用于将数据源(如数组、List或其他集合)绑定到UI组件,如ListView、GridView或RecyclerView等。通过Adapter,开发者可以将数据转化为视图元素,并展示在用户...
在Android开发中,RecyclerView是一个非常重要的组件,它用于展示可滚动的列表,具有高效的数据管理和流畅的用户体验。本文将深入探讨使用Kotlin语言编写的RecyclerView通用Adapter,以及如何调用和应用这个Adapter...
它的高效性和可滚动性使得它在各种场景下都十分实用,如联系人列表、应用列表等。本教程将针对初学者,讲解如何使用ListView和Adapter来构建一个简单的列表。 首先,我们需要了解ListView的基本结构。ListView是一...
adapter = new CustomAdapter(this, R.layout.list_item, new ArrayList()); listView.setAdapter(adapter); } ``` 3. 在doInBackground()方法中,执行数据加载任务,这一步应该在后台线程完成,避免阻塞UI。 4....
在Android开发中,Adapter是一个至关重要的组件,它作为数据源和UI展示之间的桥梁,使得数据能够正确地在各种视图组件(如ListView、...理解并熟练运用各种Adapter,能帮助开发者构建出更加丰富和高效的用户界面。
通过学习这个范例,开发者可以掌握ViewHolder模式的使用,理解ListActivity的特性,以及如何编写高效、可维护的Adapter。配合`introduce.doc`文档和`GoogleViewHolderAdapter`代码,能更深入地理解这个优化示例的...
Adapter是Android开发中的重要组件,通过封装Adapter,我们可以实现数据和视图的高效绑定,同时提高代码的可读性和可维护性。理解Adapter的工作原理和封装技巧,对于提升Android应用的用户体验和开发效率具有重要...