前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Android从零单排系列二十】《Android视图控件——ListView》

【Android从零单排系列二十】《Android视图控件——ListView》

作者头像
再见孙悟空_
发布2023-07-17 20:27:08
3390
发布2023-07-17 20:27:08
举报

前言

小伙伴们,在上文中我们介绍了Android视图组件CheckBox,本文我们继续盘点,介绍一下视图控件的ListView。

一 ListView基本介绍

ListView是Android开发中常用的列表视图控件,用于展示垂直滚动的可变长度的数据列表。

  1. 功能:ListView可以在有限的屏幕空间内显示大量的数据,并支持用户滚动浏览。它提供了一个可滚动的列表容器,可以逐项地展示数据元素。
  2. 数据源:ListView通过与适配器(Adapter)配合使用来提供数据。适配器负责将数据与每个列表项进行绑定,以便正确渲染和展示。常用的适配器包括ArrayAdapter、CursorAdapter和BaseAdapter等。
  3. 布局:ListView的每个列表项通常由一个布局文件定义,用于指定列表项的外观和内容。可以在布局文件中添加控件来显示列表项中的各个元素。
  4. 添加数据:通过适配器向ListView添加数据,可以使用适配器的方法(如add()addAll())添加单个或多个数据项。一旦数据被添加到适配器,ListView会自动刷新并显示新数据。
  5. 点击事件:可以为ListView的列表项设置点击事件监听器,使用户能够对列表项进行交互操作。通过实现OnItemClickListener接口,可以处理列表项的点击事件,并执行相应的逻辑操作。
  6. 定制化:通过定制适配器和列表项布局文件,可以实现对ListView的定制化。可以根据需求,自定义每个列表项的外观和内容,包括添加图片、文字、按钮等。
  7. 优化:当列表项较多时,为了保证流畅的滑动和提升性能,可以采用一些优化措施,例如使用ViewHolder模式、实现分页加载、使用缓存等。
  8. 替代控件:随着Android开发的演进,RecyclerView逐渐取代ListView成为更加灵活和高效的列表展示控件。推荐在新项目中使用RecyclerView,它提供了更多的定制选项和优化功能。

二 ListView使用方法

在XML布局文件中添加ListView控件:

代码语言:javascript
复制
<ListView
    android:id="@+id/listview"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

在Java代码中找到ListView控件,并创建适配器(Adapter):

代码语言:javascript
复制
ListView listView = findViewById(R.id.listview);

// 创建适配器并设置给ListView
ListAdapter adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, yourDataList);
listView.setAdapter(adapter);

可选:处理ListView的点击事件。

代码语言:javascript
复制
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        // 处理列表项的点击事件
    }
});

onItemClick()方法中,可以根据需要进行相应的操作。

三 ListView常见属性方法

ListView常见的属性和方法如下:

属性:

  1. android:id:指定ListView的唯一标识符。
  2. android:layout_width:指定ListView的宽度,可以使用具体数值(如"match_parent"、"wrap_content")或者具体数值。
  3. android:layout_height:指定ListView的高度,可以使用具体数值(如"match_parent"、"wrap_content")或者具体数值。
  4. android:divider:设置列表项之间的分割线,可以是颜色值或者drawable资源。
  5. android:dividerHeight:设置列表项之间的分割线高度,可以使用具体数值和单位(如"dp")。
  6. android:listSelector:设置当列表项被选中时的背景效果,可以是颜色值或者drawable资源。

方法:

  1. setAdapter(Adapter adapter):设置适配器,用于提供ListView的数据源。
  2. setOnClickListener(View.OnClickListener listener):设置点击事件监听器,处理列表项的点击事件。
  3. smoothScrollToPosition(int position):平滑滚动到指定位置的列表项。
  4. addHeaderView(View v):添加头部视图,可以在ListView顶部插入一个视图。
  5. addFooterView(View v):添加尾部视图,可以在ListView底部添加一个视图。
  6. setOnItemClickListener(AdapterView.OnItemClickListener listener):设置列表项的点击事件监听器,处理列表项的点击事件。
  7. getAdapter():获取当前设置的适配器。
  8. getFirstVisiblePosition():获取当前可见区域的第一个列表项的位置。
  9. getLastVisiblePosition():获取当前可见区域的最后一个列表项的位置。
  10. invalidateViews():通知ListView刷新所有列表项的视图。

 适配器:

  1. RecyclerView:RecyclerView是取代ListView的新一代列表视图控件。它提供了更强大和灵活的功能,例如支持横向滚动、网格布局、瀑布流布局等。使用RecyclerView需要自定义适配器和ViewHolder,但它具有更好的性能和可扩展性。
  2. ArrayAdapter:ArrayAdapter是基于数组的简单适配器,用于将数据与ListView绑定。它适用于静态的、固定长度的数据集合,例如字符串数组或整数数组。
  3. CursorAdapter:CursorAdapter适用于使用数据库查询结果作为数据源的情况。它将数据库查询的结果封装为Cursor对象,并将数据与ListView绑定。
  4. SimpleAdapter:SimpleAdapter是一个通用的适配器,用于将复杂的数据结构(如List<Map<String, Object>>)与ListView绑定。它通过设置键值对的映射关系,将数据项的特定字段显示在列表项的指定位置。
  5. BaseAdapter:BaseAdapter是一个抽象类,用于自定义适配器。通过继承BaseAdapter,并覆写其中的方法,可以实现完全定制化的适配器,包括列表项的视图和数据绑定过程。

四 ListView简单Demo

以下是一个简单的ListView示例代码:

在XML布局文件中添加ListView控件(activity_main.xml):

代码语言:javascript
复制
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/listview"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

创建列表项布局文件(list_item.xml):

代码语言:javascript
复制
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/textview"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="18sp"
    android:padding="10dp" />

在MainActivity中设置ListView适配器并显示数据(MainActivity.java):

代码语言:javascript
复制
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
    private ListView listView;
    private String[] fruits = {"Apple", "Banana", "Orange", "Mango", "Grape"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        listView = findViewById(R.id.listview);

        // 创建适配器并设置给ListView
        ArrayAdapter<String> adapter = new ArrayAdapter<>(this, R.layout.list_item, fruits);
        listView.setAdapter(adapter);
    }
}

运行应用程序,你将看到一个包含水果列表的ListView界面。

这个简单的示例演示了如何使用ListView和ArrayAdapter来显示一个静态字符串数组。你可以根据需要修改数据源和列表项布局,以适应不同的情况。同时,你还可以添加点击事件监听器来处理ListView中列表项的交互操作。

五 总结

istView是Android开发中常用的列表视图控件,用于展示大量数据并实现用户的垂直滚动浏览。通过适配器和点击事件监听器的配合,ListView可以灵活地展示、交互和处理列表数据。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-06-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 一 ListView基本介绍
  • 二 ListView使用方法
  • 三 ListView常见属性方法
  • 四 ListView简单Demo
  • 五 总结
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档