1.它是什么?
它是一个适配器类,它用来处理模板类型重复的数据,比如QQ的消息列表,每一条消息都有头像,名称,日期和概述。
而它就是将多人的消息数据处理成我们显示的消息界面。
2.它的工作框架是什么?
一个显示窗口,比如fragment(碎片chuangkou),它里面有一个listview布局。就是把碎片窗口中的显示类容按照列表的方式显示,需要一个视图。比如5个字符串:
...
string=new View[];
int id[]={R.id.str1,R.id.str2...};//伪代码
for(int i=0;i<5;i++)
{
string(i)=view.findViewById(id[i]);//
}
listview.add(string[0]);
listview.add(string[1]);
listview.add(string[2]);
listview.add(string[3];
listview.add(string[4]);
...
消息1 |
消息2 |
消息3 |
消息4 |
消息5 |
那么视图view我们可以新建一个layout布局,里面添加一些图片控件和文本控件,listview会将你的任何布局在界面中以列表的方式显示出来。
窗口中有一个listview,view就是一个显示界面的最小单位。比如显示一个图片,文本。而simpleadapter就是将数据和视图联系起来,解决多个view 重复绑定繁琐工作的模板,你只要告诉第一个视图如何与listview绑定数据,其它有多少视图数据就显示多少。一个人qq消息就是一个视图,多人消息适配器就会自动处理显示。
2. 数据的绑定
...
//构造函数
public SimpleAdapter(Context context, List<? extends Map<String, ?>> data,
@LayoutRes int resource, String[] from, @IdRes int[] to) {
mData = data;
mResource = mDropDownResource = resource;
mFrom = from;
mTo = to;
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
...
/*
参数1:上下文,就是一个进程的运行的环境句柄。比如mainactivity.this,一般为显示的acticity的context
参数2:一个列表,列表里的每一个元素又是一个hashmap表。
参数3:你想要显示的视图布局,一般就是R.layout.name
参数4:hashmap的键名,就是“key”
参数5:就是你视图中的控件id,这个视图就是参数3视图布局中的控件
*/
//显示界面
Viewlist viewlist=view.findViewById(R.id.viewlist);
viewlist.setAdapter(adapter);
总结:学习这一块有2个,一个是listview,一个是simpleAdapter类。两个是联系在一起的。
最起码你待知道什么是视图,布局,控件吧,知道它们的数据绑定方式吧。
提醒:建议学习最新的控件绑定方式,更加灵活,比如binding,这是更符合编程思维的。