一.列表视图的介绍

列表视图是android中最常用的一种视图组件,它以垂直列表的形式列出需要显示的列表项。
在android中有两种方法向屏幕中添加列表视图:
一种是直接使用ListView组件创建;
另外一种是让Activity继承ListActivity实现。

二.华老师的关于列表视图的思维导图

(放在这儿,怕以后找不到)

三.基于数组适配器使用列表视图

四.案例:阅读故事

1.建立ReadAncientPoetry的文件

2.准备好背景图片,放到drawable文件下

3.在布局资源文件下面建立好ListView,将限定布局改为线性布局


4. 注意:ListView中常用的属性

(1).android:divider

(2).android:dividerHeight

(3).android:entries

(4).android:footerDividersEnabled

(5).android:headerDividersEnabled

(6).ListView主要使用的方法:

5.准备数据源

    List mAddHeaderFooterList = new ArrayList<String>();

6.将数据源添加到适配器中

        ArrayAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mAddHeaderFooterList);

7.将适配器中的数据添加到ListView中

        mListView.setAdapter(adapter);

8.添加诗歌列表项模板poem_list_item.xml


<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/tvPoemTitle"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center_vertical"android:minHeight="80dp"android:textColor="#0000ff"android:textSize="25sp" />

9.字符串的资源文件String.xml

<resources>                                                                                                             <string name="app_name">阅读古诗</string>                                                                            <string-array name="titles">                                                                                        <item>静夜思</item>                                                                                                <item>登鹳雀楼</item>                                                                                               <item>相思</item>                                                                                                 <item>听弹琴</item>                                                                                                <item>登乐游原</item>                                                                                               <item>朝发白帝城</item>                                                                                              <item>巴山夜雨</item>                                                                                               <item>渭城曲</item>                                                                                                <item>春夜喜雨</item>                                                                                               <item>离离原上草</item>                                                                                              <item>示儿</item>                                                                                                 </string-array>                                                                                                     <string-array name="authors">                                                                                       <item>唐·李白</item>                                                                                               <item>唐·王之涣</item>                                                                                              <item>唐·王维</item>                                                                                               <item>唐·刘长卿</item>                                                                                              <item>唐·李商隐</item>                                                                                              <item>唐·李白</item>                                                                                               <item>唐·杜牧</item>                                                                                               <item>唐·王维</item>                                                                                               <item>唐·杜甫</item>                                                                                               <item>唐·白居易</item>                                                                                              <item>宋·陆游</item>                                                                                               </string-array>                                                                                                     <string-array name="contents">                                                                                      <item>床前明月光,\n疑是地上霜。\n举头望明月,\n低头思故乡。</item>                                                                     <item>白日依山尽,\n黄河入海流。\n欲穷千里目,\n更上一层楼。</item>                                                                     <item>红豆生南国,\n春来发几枝。\n愿君多采撷,\n此物最相思。</item>                                                                     <item>泠泠七弦上,\n静听松风寒。\n古调虽自爱,\n今人多不弹。</item>                                                                     <item>向晚意不适,\n驱车登古原。\n夕阳无限好,\n只是近黄昏。</item>                                                                     <item>朝辞白帝彩云间,\n千里江陵一日还。\n两岸猿声啼不住,\n轻舟已过万重山。</item>                                                             <item>君问归期未有期,\n巴山夜雨涨秋池。\n何当共剪西窗烛,\n却话巴山夜雨时。</item>                                                             <item>渭城朝雨浥轻尘,\n客舍青青柳色新。\n劝君更尽一杯酒,\n西出阳关无故人。</item>                                                             <item>好雨知时节,当春乃发生。\n随风潜入夜,润物细无声。\n野径云俱黑,江船火独明。\n晓看红湿处,花重锦官城。</item>                                             <item>离离原上草,一岁一枯荣。\n野火烧不尽,春风吹又生。\n远芳侵古道,晴翠接荒城。\n又送王孙去,萋萋满别情。</item>                                             <item>死去元知万事空,\n但悲不见九州同。\n王师北定中原日,\n家祭无忘告乃翁。 </item>                                                            </string-array>
</resources>                                                                                                            

10.主页面MainActivity.xml

(1)声明变量

(2)通过资源标识符获取控件实例

(3)初始化古诗标题数组

(4)创建数组适配器

(5)给列表控件设置适配器

(6)代码提示

package net.yuanjing.readancientpoetry;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;public class MainActivity extends AppCompatActivity {private ListView lvPoemTitle; //显示古诗标题的列表控件 - 展示private ArrayAdapter<String> adapter; // 数组适配器 - 桥梁private String[] strPoemTitles; // 古诗标题数组 - 数据源@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//利用布局资源文件设置用户界面setContentView(R.layout.activity_main);// 通过资源标识符获取控件实例lvPoemTitle = findViewById(R.id.lvPoemTitle);// 初始化古诗标题数组,作为数据源String[] titles = getResources().getStringArray(R.array.titles);strPoemTitles = new String[titles.length];for (int i = 0; i < strPoemTitles.length; i++) {strPoemTitles[i] = (i + 1) + ". " + titles[i];}// 创建数组适配器adapter = new ArrayAdapter<>(this,// 参数1:上下文环境android.R.layout.simple_list_item_1,// 列表项模板strPoemTitles // 数据源 - 数组);// 给列表控件设置适配器lvPoemTitle.setAdapter(adapter);}
}

(7)运行的效果

11.采用平台提供的列表项模板资源,看一哈效果




注意:一页没有显示完全的古诗标题,可以通过手势滑动看到其余的列表项

12.单击列表项,弹出吐司,显示古诗名及其编号

(1)修改主界面类,给列表控件注册项目单击监听器

(2)参数position是用户单击列表项的位置,从0开始的,比如用户单击了第3个列表项,那么position就等于2,也就是说,position要加1才是行号。

(3)参数id的值与参数position的值相等,两个参数只是类型不同而已。

(4)查看运行的效果

13.创建显示古诗内容的界面 - ContentActivity

(1).基于模板创建ContentActivity

(2).内容界面布局资源文件content_activity.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/background"android:orientation="vertical"android:padding="10dp"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:id="@+id/tvIcon"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginRight="20dp"android:layout_weight="0.5"android:text="@string/icon"android:textSize="20sp" /><TextViewandroid:id="@+id/tvName"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="@string/name"android:textSize="20sp" /><TextViewandroid:id="@+id/tvPhone"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1.5"android:text="@string/phone"android:textSize="20sp" /></LinearLayout><Viewandroid:layout_width="match_parent"android:layout_height="1dp"android:layout_marginTop="5dp"android:layout_marginBottom="5dp"android:background="#aaaaaa" /><ListViewandroid:id="@+id/lvContact"android:layout_width="match_parent"android:layout_height="wrap_content">        </ListView>
</LinearLayout>

(3).创建String

(4).通过资源标识符获取控件实例

(5).获取窗口跳转的意图,获取意图携带的数据,进行相应的处理

(6).返回目录按钮单击事件处理方法

14.代码提示:

package net.yuanjing.readancientpoetry;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;public class ContentActivity extends AppCompatActivity {private TextView tvTitle;private TextView tvAuthor;private TextView tvContent;private String[] titles;private String[] authors;private String[] contents;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_content);// 通过资源标识符获取控件实例tvTitle = findViewById(R.id.tvTitle);tvAuthor = findViewById(R.id.tvAuthor);tvContent = findViewById(R.id.tvContent);//获取窗口跳转的意图Intent intent = getIntent();//判断意图是否为空if (intent != null) {//获取意图携带的数据int position = intent.getIntExtra("position", 0);//获取古诗标题数组titles = getResources().getStringArray(R.array.titles);//获取古诗作者数组authors = getResources().getStringArray(R.array.authors);//获取古诗内容数组contents = getResources().getStringArray(R.array.contents);//设置古诗标题标签文本tvTitle.setText(titles[position]);//设置古诗作者标签文本tvAuthor.setText(authors[position]);//设置古诗内容标签文本tvContent.setText(contents[position]);}}public void doBack(View view) {finish();}
}

15.修改主界面类,实现窗口跳转

代码:

package net.yuanjing.readancientpoetry;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;public class MainActivity extends AppCompatActivity {private ListView lvPoemTitle; //显示古诗标题的列表控件 - 展示private ArrayAdapter<String> adapter; // 数组适配器 - 桥梁private String[] strPoemTitles; // 古诗标题数组 - 数据源@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//利用布局资源文件设置用户界面setContentView(R.layout.activity_main);// 通过资源标识符获取控件实例lvPoemTitle = findViewById(R.id.lvPoemTitle);// 初始化古诗标题数组,作为数据源String[] titles = getResources().getStringArray(R.array.titles);strPoemTitles = new String[titles.length];for (int i = 0; i < strPoemTitles.length; i++) {strPoemTitles[i] = (i + 1) + ". " + titles[i];}// 创建数组适配器adapter = new ArrayAdapter<>(this,// 参数1:上下文环境R.layout.poem_list_item,// 列表项模板strPoemTitles // 数据源 - 数组);// 给列表控件设置适配器lvPoemTitle.setAdapter(adapter);//给列表控件注册项目单机监听器lvPoemTitle.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {Toast.makeText(MainActivity.this,"你选择了第" + (position + 1)+ "首古诗【" + titles[position] + "】",Toast.LENGTH_LONG).show();//创建窗口跳转的意图Intent intent = new Intent(MainActivity.this,ContentActivity.class);//通过意图携带数据intent.putExtra("position",position);//按照意图启动目标组件startActivity(intent);}});}
}

16.效果展示:

安卓:Day5 列表视图相关推荐

  1. 安卓学习之路之如何显示一个listview列表视图

    1.新建个安卓项目,点击res下的values目录,在该目录下创建一个名字为arrays.xml的Android xml文件,然后开始在里面写代码,代码如下: <?xml version=&qu ...

  2. 安卓学习笔记22:常用控件 - 可展开列表视图

    文章目录 零.学习目标 一.可展开列表视图概述 二.可展开列表视图继承关系图 三.教学案例 - 选择四大名著人物 (一)运行效果 (二)涉及知识点 (三)实现步骤 1.创建安卓应用[SelectCha ...

  3. 安卓学习笔记21:常用控件 - 列表视图

    文章目录 零.学习目标 一.列表视图概述 (一)继承关系图 (二)列表视图四要素 (三)四种适配器 二.基于数组适配器使用列表视图案例 -- 阅读古诗 (一)数组适配器 (二)运行效果 (三)涉及知识 ...

  4. 安卓讲课笔记(9):列表视图

    安卓讲课笔记(9):列表视图 上次课我们通过"设置基本信息"案例,讲解了单选按钮与复选框的常用属性以及用法.单选按钮与复选框最关键的方法是 isChecked() ,根据该方法返回 ...

  5. android仿微信点击好友,安卓开发仿微信联系人列表-机器人列表视图仿微通道聊天多久最底部滑动...

    楼主你好!根据你的描述,让我给你答案! :新内容加进来,列表视图重新为setSelection后,定位结束后,拉起一个页面放. . 希望你能有所帮助,如果满意,请记得采纳像下拉条为微信好友如何实现 简 ...

  6. 安卓常用控件--列表视图

    安卓常用控件--列表视图 (一)列表视图概述 1.继承关系图 2.列表视图API文档 3. 列表视图四要素 4.四种适配器 (二)数组适配器 1.数组适配器API文档 2.数组适配器继承关系 3.数组 ...

  7. 安卓开发 5.6 初探列表视图(ListView)

    文章目录 一.导读 二.列表视图的概述 1.继承关系图 2.列表视图API文档 3.列表视图四要素 4.四种常用适配器 三.案列演示 1.数组适配器案列---阅读古诗 (1) .准备工作 (2) .创 ...

  8. 安卓学习笔记5.6—列表视图

    目录 零.学习目标 一.列表视图概述 (一)继承关系图 (二)列表视图四要素 (三)四种适配器 二.基于数组适配器使用列表视图案例 -- 阅读古诗 (一)数组适配器 (二)涉及知识点 (三)实现步骤 ...

  9. 安卓基础学习 Day 6|常用控件---列表视图+古诗查看

    目录 列表视图4要素 四种是适配器 古诗查看 古诗列表 1.主布局资源文件 2.诗歌列表项模板 3.字符串资源文件 4.主界面代码 5.启动应用.查看效果 古诗内容模板 1.内容模板的主布局资源文件 ...

最新文章

  1. Java大厂技术文档:Redis+Nginx+设计模式+Spring全家桶+Dubbo精选
  2. Poisson Image Editing 泊松融合 matlab代码完整
  3. python编程16章_Python核心编程——Chapter16
  4. 非主流图片编辑软件_快火拼多多直播发言软件怎么下载
  5. HDOJ 1036 Average is not Fast Enough!
  6. 换行样式不要首行缩进_修改文档样式库中的“正文”样式,使得文档中所有正文段落首行缩进2个字符。...
  7. defun 函数定义
  8. php sqlite并发访问,PHP基于文件锁实现sqlite的并发操作
  9. ps4怎么用html,ps4改dns教程 ps4怎么设置dns
  10. OpenCV(3.4.1)错误 Assertion failed (chunk.m_size 0xFFFF)
  11. LPC1768 MCUXpresso IDE环境下使用完整64K内存的方法
  12. PMP项目经理求职面试常见问题汇总
  13. 【转】MUD教程--巫师入门教程2
  14. 合成孔径雷达地面运动目标检测技术研究——基于概率图(Matlab代码实现)
  15. NodeJS 频繁请求服务器限速工具
  16. Qt数字电子钟(根据进位计算实现)
  17. 安利给CIO的零信任安全指南
  18. EXP-00091 Exporting questionable statistics(转)
  19. 使用log4j的邮件功能
  20. matlab中b级路面功率谱密度仿真建模,汽车路面激励时域建模及仿真.pdf

热门文章

  1. 如何取消服务器自动关机,服务器自动关机求助
  2. 关于CMake的使用介绍
  3. u盘装红帽子6.5系统linux,哪位大神会用红帽子6.5版本的linux系统
  4. Linux学习 day05之用户组权限管理
  5. OSChina 周日乱弹 —— 有鬼故事!胆小勿入
  6. 无人值守安装linux7,kickstart无人值守安装CentOS7
  7. Python爬音乐--qq
  8. 使用腾讯IP查询-判断IP归属地-Vic's blog
  9. ubuntu安装postfix+esmtp验证配置
  10. 提取文章中的人名php,php中实现将姓名拆分为姓氏和名字