在实际开发过程中,为了定制ListView项内容,通常所使用的方式是,创建所需要Adapter的子类,并重写getView()方法。
getView()方法接受一个名为convertView,View类型的参数。
如果convertView为null,就需要创建一个新的View对象;如果convertView非null,它实际上是之前使用过的View对象。
事实上,Android试图循环使用那些scroll到列表边界外的View。
另一个消耗CPU的方法是findViewById()。
所有继承自View的子类都有getTab()方法和setTab()方法,这样我们就可以通过设置“tab”关联任何对象到该View。
使用Holder模式,仅需调用一次findViewById()方法,让“tag”持有该View的子Widget,在每次使用该View时,就可以直接访问这些子Widget,而无需重复调用了。
示例代码:
创建一个ListActivity显示ListView
package lizhen.listview;
import android.app.ListActivity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
public class Main extends ListActivity {
private String[] data = {"A", "N", "D", "R", "O", "I", "D", "G", "O", "O", "G", "L", "E"};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setListAdapter(new MyAdapter(this, data));
}
private class MyAdapter extends BaseAdapter {
private final Context context;
private final String[] data;
public MyAdapter(Context context, String[] data) {
this.context = context;
this.data = data;
}
@Override
public int getCount() {
return data.length;
}
@Override
public Object getItem(int position) {
return data[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Holder holder = null;
if(convertView == null) {
convertView = getLayoutInflater().inflate(R.layout.item, parent, false);
holder = new Holder(convertView);
convertView.setTag(holder);
} else {
holder = (Holder) convertView.getTag();
}
holder.getIcon().setImageResource(R.drawable.icon);
holder.getLabel().setText(data[position]);
return convertView;
}
}
}
创建自定义类Holder,用于持有列表项的子Widget
package lizhen.listview;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
public class Holder {
private View parentView;
private ImageView iconImageView;
private TextView labelTextView;
public Holder(View view) {
this.parentView = view;
}
public ImageView getIcon() {
if(iconImageView == null) {
iconImageView = (ImageView) parentView.findViewById(R.id.icon);
}
return iconImageView;
}
public TextView getLabel() {
if(labelTextView == null) {
labelTextView = (TextView) parentView.findViewById(R.id.label);
}
return labelTextView;
}
}
运行结果:
- 大小: 31.8 KB
分享到:
相关推荐
在Android开发中,ListView是一种非常常见的控件,用于展示大量数据列表。它的高效性和可滚动性使得它在显示数据集合时十分有用。然而,当ListView的子项(item)宽度超过屏幕宽度时,如何实现自动换行就成了一个...
在Android开发中,ListView是一种非常常见的控件,用于展示大量数据列表。它的高效性和可滚动性使得它在处理数据展示时十分有用。本教程将详细讲解如何在Android中使用ListView,特别是添加表头(headView)和表尾...
在Android开发中,ListView是一个非常重要的组件,常用于展示大量数据列表。BaseAdapter则是与ListView配合使用的数据适配器,负责将数据绑定到ListView的各个视图上。本篇文章将深入探讨ListView与BaseAdapter的...
在Android开发中,ListView是一种常用的组件,用于展示大量的列表数据。它通过滚动的方式高效地管理视图,使得只渲染屏幕可见的部分,从而节省系统资源。然而,随着移动应用的不断发展,用户对交互体验的需求也在...
在Android开发中,ListView是一种常用的组件,用于展示可滚动的多行...理解这些知识点对于开发高效、用户友好的Android应用至关重要。通过熟练掌握这些技术,开发者可以更好地实现ListView的个性化需求,提升用户体验。
这个概念通常与RecyclerView结合使用,因为RecyclerView是Android API 21及更高版本中推荐的列表视图组件,它可以提供更高效的数据绑定和更好的性能。 **一、RecyclerView简介** RecyclerView是Android系统提供的一...
在Android应用开发中,ListView是显示大量数据列表的常用组件,尤其在构建用户界面时扮演着重要角色。本文将深入探讨如何在Eclipse开发环境中利用ListView结合Adapter来展示数据。 首先,`ListView`是一个可滚动的...
在Android开发中,ListView是一种非常常见的控件,用于展示大量数据列表。它的高效性和可滚动性使得它在处理数据集合时十分有用。本教程将详细讲解如何在Android中实现ListView的动态添加和删除项功能。 一、...
ListView具有滚动和优化性能的特性,可以高效地处理大量数据。 二、实现单选功能的步骤 1. **定义数据模型** 首先,创建一个数据模型类,用于存储每个条目的数据,如文本信息、是否选中的状态等。 ```java public...
在Android开发中,ListView是一个非常常用的组件,它用于展示大量数据列表,具有高效的滚动性能和自动回收机制。然而,当ListView需要与ScrollView嵌套使用时,可能会遇到一些问题,特别是不能正常刷新。本文将深入...
总之,理解和掌握ListView的复用机制对于任何Android开发者来说都是至关重要的,它不仅可以提升应用的性能,还能帮助开发者编写出更加健壮和高效的代码。这个demo和相关的博客文章为学习和实践这一关键技巧提供了...
综上所述,通过异步加载库、ViewHolder优化、合理的缓存策略以及资源释放,我们可以实现高效且稳定的在ListView中加载图片。对于Android初学者来说,这是一个很好的实践项目,能够深入理解Android UI的优化和多线程...
ListView通过高效的滚动性能和可复用的视图来优化内存使用,使得在有限的内存条件下可以加载大量数据。下面我们将详细探讨Android ListView的相关知识点。 1. **ListView的基本使用** - 在布局文件中添加ListView...
在Android开发中,ListView是一个非常重要的组件,它用于展示大量数据列表,比如联系人列表、邮件列表等。这个实例源码“Test_Golf1”很可能包含了一个完整的ListView应用示例,帮助开发者理解如何在Android中有效地...
1. 使用RecycleView替代ListView,RecycleView提供了更高效的视图复用机制。 2. 使用HeaderView和FooterView来代替嵌套的ListView,这可以减少层级,提高性能。 3. 使用ExpandableListView,这是一个内置支持折叠...
在Android开发中,ListView是常用的一种控件,用于展示大量数据列表。本篇文章将深入探讨如何在Android中实现ListView的显示以及单击事件处理。首先,我们了解ListView的基本概念。 ListView是一个可滚动的视图,它...
在Android开发中,ListView是一种常用的组件,用于展示大量的数据列表。然而,当ListView中的每一项都需要显示网络图片时,如果不进行优化,可能会导致性能问题,如界面卡顿、滚动不流畅等。这个问题的解决方法是...
在Android开发中,ListView是一个非常重要的组件,它用于展示大量数据的列表,用户可以通过滚动查看更多的条目。这个教程将详细介绍Android ListView的基本用法。 ### 1. 添加ListView到布局 首先,在XML布局文件...
在Android开发中,ListView是一种常用的组件,用于展示大量的列表数据。在实现联系人模块时,A-Z字母排序功能是常见的需求,它可以帮助用户快速定位到特定联系人的位置。此外,结合搜索功能,可以让用户根据输入框的...
总之,理解并掌握android listview的相关知识,特别是横向ListView、微信风格的ListView以及XListView的优化,对于Android开发者来说至关重要,它们能帮助你创建出更加高效且用户体验良好的应用程序。