第3章 Android常见界面控件

课后习题

1. 简述ListView与RecyclerView的区别

ListView与RecyclerView的区别具体如下:
①展示效果:RecyclerView控件可以通过LayoutManager类实现横向或竖向的列表效果、瀑布流效果和GridView效果,而ListView控件只能实现竖直的列表效果。
②适配器:RecyclerView控件使用的是RecyclerView.Adapter适配器,该适配器将BaseAdapter中的getView()方法拆分为onCreateViewHolder()方法和onBindViewHolder()方法,强制使用ViewHolder类,使代码编写规范化,避免了初学者写的代码性能不佳。
注:
onCreateViewHolder方法主要用于加载Item界面的布局文件,并将MyViewHolder类的对象返回
onBindViewHolder方法主要是将获取的数据设置到对应的控件上
类似于ListView中ViewHolder类作用的MyViewHolder类用于获取Item界面上的控件
③复用效果:RecyclerView控件复用Item对象的工作由该控件自己实现,而ListView控件复用Item对象的工作需要开发者通过convertView的setTag()方法和getTag()方法进行操作。
④动画效果:RecyclerView控件可以通过setItemAnimator()方法为Item添加动画效果,而ListView控件不可以通过该方法为Item添加动画效果。

2. 简述实现Button按钮的点击事件的方式有哪几种?

实现Button按钮的点击事件一共有3种方式,具体如下:
①在布局文件中指定onClick属性的方式设置点击事件,Activity中定义实现点击事件的方法名必须与onClick属性的值保持一致。
②使用匿名内部类的方式设置点击事件。
③通过为Activity实现OnClickListener接口的方式设置点击事件。
前两种适用于Button控件较少的情况
后一种适用于Button控件较多的情况

3.1简单控件的使用

3.1.1TextView

在这里插入图片描述
在这里插入图片描述
Android中的空间样式除了可以使用XML属性设置外,也可以使用Java中的方法设置,空间的每一个XML属性都对应一个Java方法

3.1.2Button

继承自TextView控件,既可以显示文本,又可以显示图片,同时也允许用户通过点击来执行操作

为Button控件设置点击事件的方式:
①在布局文件中指定onClick属性的方式设置点击事件
在这里插入图片描述
在Activity中定义实现点击事件的方法名,必须与onClick属性的值保持一致
②使用匿名内部类的方式设置点击事件
在这里插入图片描述
③Activity实现OnClickListener接口的方式设置点击事件
在这里插入图片描述

3.1.3EditText

编辑框,是TextView的子类
在这里插入图片描述

3.1.4ImageView

继承自View,可以加载各种图片资源
在这里插入图片描述
andriod:background属性设置的是背景,会根据ImageView控件的大小进行伸缩,而android:src属性设置的是前景,以原图大小显示

3.1.5RadioButton

单选按钮,是Button的子类
每一个单选按钮都有选中和未选中两种状态,是通过android:checked属性指定的
在Android程序中RadioButton经常与RadioGroup配合使用,实现RadioButton的单选功能
在这里插入图片描述
RadioGroup继承自LinearLayout,可以使用android:orientation属性控制RadioButton的排列方向
在这里插入图片描述

3.1.5CheckBox

复选框,是Button的子类,用于实现多选功能
每一个复选框都有选中和未选中两种状态,是通过android:checked属性指定的
在MainActivity中实现CompoundButton.OnCheckedChangeListener接口,并重写onCheckedChanged()方法,在该方法中实现CheckBox控件的点击事件
在这里插入图片描述

3.1.7Toast

Toast是Android系统提供的轻量级信息题型机制,用于向用户提示即时消息,它显示在应用程序界面的最上层,显示一段时间后自动消失不会打断当前操作

Toast.makeText(Context,Text,Time).show();

Context:当前组件的上下文环境,Context是一个抽象类,如果在Activity中使用Toast提示信息,那么该参数可设置为“当前Activity.this”
Text:字符串信息
Time:显示信息的时长,其属性值包括Toast.LENGTH_SHORT和Toast.LENGTH_LONG

3.3ListView的使用

3.3.1ListView控件的简单使用

以列表形式展示数据内容,并且能够根据列表的高度自适应屏幕显示
在这里插入图片描述
在这里插入图片描述

3.3.2常用数据适配器(Adapter)

在为ListView控件添加数据时会用到数据适配器,数据适配器是数据与视图之间的桥梁,它类似于一个转换器,将复杂的数据转化成用户可以接收的方式进行呈现

1.BaseAdapter

基本适配器,实际上是一个抽象类,通常在自定义适配器时会继承BaseAdapter,该类拥有四个抽象方法
在这里插入图片描述
注:getView方法中,convertView代表的是滑出屏幕的Item对象(以缓存形式存在),可以通过复用convertView对象从而减少Item对象的创建

2.SimpleAdapter

继承自BaseAdapter,实现了BaseAdapter的四个抽象方法并对其进行封装
SimpleAdapter的构造方法的具体信息:
在这里插入图片描述

3.ArrayAdapter

是BaseAdapter的子类,用法与SimpleAdapter类似
常用于适配TextView控件
ArrayAdapter有多个构造方法
在这里插入图片描述
使用实例:
在这里插入图片描述

优化ListView加载数据逻辑
当ListView控件上加载的Item过多并快速滑动该控件时,界面会出现卡顿的现象:
①当滑动时,不断地创建Item对象,ListView控件在当前屏幕上显示多少个Item,就会在适配器中的getView方法中创建多少个Item对象,当滑动ListView控件时,滑出屏幕的Item对象会被销毁,新加载到屏幕上的Item会创建新的对象,因此快速滑动ListView控件时会不断地对Item对象进行销毁和创建
②每创建一个Item对象都需要加载一次Item布局,加载布局时会不断地执行findViewById,这些操作比较耗费设备的内存并且浪费时间
优化的目的是使ListView控件在快速滑动时不再重复创建Item对象,减少内存的消耗和屏幕渲染的处理
在这里插入图片描述
这个优化的过程也是ListView与RecyclerView不同的地方

3.4RecyclerView的使用

RecyclerView的功能更加强大:
在这里插入图片描述
在这里插入图片描述
onCreateViewHolder方法主要用于加载Item界面的布局文件,并将MyViewHolder类的对象返回
onBindViewHolder方法主要是将获取的数据设置到对应的控件上
MyViewHolder类用于获取Item界面上的控件
RecyclerView空间与ListView控件展示的列表效果相同,但是每个Item之间默认没有分割线,开发者可以通过RecyclerView控件的addItemDecoration()方法对列表的分割线进行设置

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

so.far_away

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值