ListView 是 Android 中用于显示垂直滚动列表的经典 UI 组件。虽然随着 RecyclerView 的推出,ListView 的使用变得相对较少,但它在一些场景中仍然是有效且简单的选择。以下是 ListView 的原理、使用方法及优化策略。
ListView 的原理
1. Adapter 模式
ListView 使用适配器(Adapter)来绑定数据。适配器负责提供数据项的视图,并将数据与视图进行绑定。常见的适配器包括 ArrayAdapter、SimpleAdapter 和 CursorAdapter。适配器通过 getView() 方法返回每个数据项对应的视图。
2. 视图回收机制(View Recycling)
ListView 为了优化性能,避免频繁创建和销毁视图,通过视图回收机制复用已经滚出屏幕的视图。这是通过 getView(int position, View convertView, ViewGroup parent) 方法中的 convertView 参数实现的。convertView 是一个旧视图对象,当没有可复用的视图时,它为 null,ListView 将创建一个新的视图;当有可复用的视图时,ListView 会传递该视图以供重用。
3. ViewHolder 模式
ViewHolder 模式是一种优化技术,用于减少 findViewById 的调用次数。在 ViewHolder 中缓存子视图的引用,从而避免每次调用 getView() 时都查找视图,提升性能。
ListView 的使用
1. 在布局文件中添加 ListView
android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="match_parent" /> 2. 准备数据源 String[] data = { "Item 1", "Item 2", "Item 3"}; 3. 创建 Adapter 并设置给 ListView ArrayAdapter this, android.R.layout.simple_list_item_1, data); ListView listView = findViewById(R.id.list_view); listView.setAdapter(adapter); 4. 自定义列表项布局和 Adapter 定义自定义列表项布局: