数据适配器(2017年12月11日)
2017.12.11
1、Android提供了哪些数据适配器?
使用数据列表(Listview、GridView、RecyclerView),关键点还是数据适配器。数据适配器解决了将数据如何显示到条目布局上这个问题。
在ArrayAdapter示例中,我们发现只能将一列数据贴到item布局上,且item布局只有一个控件。实际开发中,允许item布局非常复杂,可以将多个不同的数据贴到item布局中多个控件上,如何处理?
假设不仅仅有姓名,还有电话这2个信息,如何处理?发现ArrayAdapter传入数据只能传入一个数组,数组内都是一个作用的数据(例如只能是姓名或者只能是电话,不能是2个都在)。
有哪些可以使用的数据适配器?
ArrayAdapter:只能处理一列数据
SimpleAdapter:可以处理多列数据
BaseAdapter:可以处理多列数据,且还可以对数据以及条目进行更复杂的操作,例如选中变红。
2、ArrayAdapter如何使用?
它继承了BaseAdapter,是对BaseAdapter的进一步封装。为开发简化操作步骤。
常用:public ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects)这个构造函数
context:表示上下文
resource:条目布局
textViewResourceId:条目中那个textView
objects:泛型数组,T在实例化时指定
3、SimpleAdapter如何使用?
它继承了BaseAdapter,是对BaseAdapter的进一步封装。为开发简化操作步骤。
允许多列数据,也就是给条目填充数据时允许多列对应多个控件,控件不限于某一种。
使用:public SimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to)构造函数创建adapter实例
context:表示上下文
data:表示向条目中填充的数据,允许多列。关于data数据的解释:
resource:表示条目布局
from:表示什么数据
to:表示什么控件
from和to表示将哪列数据贴到哪个控件。
【案例】创建SimpleAdapter的数据。将一个二维表数据存入到List集合中。
【案例】创建SimpleAdapter。
项目结构:
activity_main.xml
item.xml
styles.xml
MainActivity.java
效果:
4、使用BaseAdapter,创建一个类继承BaseAdapter。
需要实现的方法有:
int getCount():表示返回数据有多少条。
Object getItem(int position):表示返回当前条目
long getItemId(int position):表示返回当前条目的id
View getView(int position,View convertView ,ViewGroup parent):表示返回条目布局
注意:
这些方法称为回调方法,调用交给了Android开发框架,不是由自身代码调用;
方法中的参数,叫回调参数,参数的实参也不是由当前代码提供,交给了android开发框架来提供。
【案例】使用BaseAdapter
item.xml:
其他xml文件参考上例。
MyBaseAdapter.java
MainActivity.java
效果:
【作业】
修改课堂案例,实现奇偶行背景颜色不一样。