(原创)安卓快速使用简单的ListView

发布时间 2023-10-30 08:34:55作者: lmj625

原创声明:本文所有图片和代码皆由本人制作和编写。

前言

这学期刚开的安卓课程,为了写实验上网查资料,只想找简明扼要的教程来让我快速写完实验,不过大多数教程会先进行长篇介绍,对于赶ddl的我有点太详细了。通过实验后,我写下这篇简洁的文章作为备忘录,最后还有个大作业要写。

本文仅涉及最简ListView使用方法,适合用于刚接触安卓的新手。



目标与效果

目标是在一个活动界面显现出一个列表,然后为列表的小项目设置监听器。



4步走

第一:在布局文件添加ListView组件

哪个活动需要ListView组件就在该活动的.xml布局文件添加如下代码:

    <ListView
        android:id="@+id/my_listView"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </ListView>

第二:创建适配器

如果数据是简单的列表项,则选择ArrayAdapter。如果数据或布局更加复杂,则选择自定义的BaseAdapter。本文只涉及最简单的ArrayAdapter,也许后续写更复杂情况的教程。
ArrayAdapter是抽象类BaseAdapter的实现,用于将数组或列表中的数据与ListView进行适配,以使数组或列表中的数据按列表形态展现。

哪个活动需要ListView组件就在该活动的onCreate函数创建适配器。为了创建适配器,我们需要准备每一个小条目的布局以及要显示的内容数据。

为适配器提供每一个小条目的布局

Android SDK已经提供了一些预定义布局资源,比如:

  • android.R.layout.simple_list_item_1:显示单个文本项的简单列表项布局。
  • android.R.layout.simple_list_item_2:显示两个文本项的简单列表项布局。
  • android.R.layout.simple_list_item_single_choice:用于单选列表的简单布局。
  • android.R.layout.simple_list_item_multiple_choice:用于多选列表的简单布局。

这里使用simple_list_item_1足矣。

为适配器提供要显示的内容数据

这里需要显示的数据是题号,所以准备一个String数组即可。

小综上

//效果等价于 String[] data={"第一题","第二题","第三题"};反正就是准备一个String数组
String[] data= questionsList.getQuestionsData();
//使用ArrayAdapter适配器的构造器,
ArrayAdapter<String> adapter = new ArrayAdapter<String>( QuestionsListActivity.this,android.R.layout.simple_list_item_1,data);

第三: 把第一步的布局里的ListView组件和第二步的适配器联系起来

ListView myListView = findViewById(R.id.list);
myListView.setAdapter(adapter);

第四:为每个小条目添加点击事件监听器

这需要重写AdapterView.OnItemClickListener的onItemClick()方法。这个方法有三个参数,第一个参数AdapterView<?> parent是确定哪个AdapterView。第二个参数View,是你点击的条目。第三个position参数是表示所点击的条目是适配器第几个生成的条目,序号从0开始递增。第四个id参数是你点击了第几行条目,通常和position一样。

下面的实例代码实现的结果是:点击相应题号会跳转到相应题干。所以代码逻辑就是由position决定取出的题干列表的索引,然后通过Intent把题干传递给别的活动。

myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
		//编写你的代码逻辑
                String text = questionsList.getQuestionList().get(position).getText();
                Intent i =new Intent(QuestionsListActivity.this,ShowQuestionActivity.class);
                i.putExtra(EXTRA_TEXT,text);
                startActivity(i);
            }
        });


后记

感谢你看到这里。