ListView
ListView是Android开发中比较常用的组件,它以列表的形式展示具体内容并且能够根据数据的长度自适应显示,列表的显示需要三个元素:
(1) ListView:用来展示列表的视图View;
(2)适配器Adapter:用来把数据映射到ListView上的中介;
(3)数据︰包括具体的将被映射的字符串,图片,或者基本组件。
ArrayAdapter通常用于适配TextView控件,常采用下面的构造方法:
public ArrayAdapter (Context context, int resource,T[] objects);
//context:表示上下文对象
//resource: ltem布局的资源id
//objects:需要适配的数据
SimpleAdapter通常采用下面的构造方法:
public SimpleAdapter (Context context, List<? ExtendsMap<String,?> >data,int resource,Stringl[] from,int[]to);
//context:表示上下文对象
//data:数据集合
//resource: ltem布局的资源id
//from: Map集合中的key值
//to:item布局中对应的控件
ListView开发步骤:
- 设计主界面layout,比如设计activity_main.xml
- 设计ListView条目的layout
- 设计Adapter,比如设计ArrayAdapter或SimpleAdapter设置Adapter,listView.setAdapter(simpleAdapter)
- 设置条目被点击或被选中的监听事件:
listView.setOnltemlickListener或listView.setOnltemSelectedListener
期望中的页面:上面部分是ArrayAdapter,下面部分是使用SimpleAdapter
实操部分
主页面layout如下:【linearlayout垂直布局页面下两个listview,权重为1】
ListView的layout分别如下:其中第一个为ArrayAdapter,第二个是SimpleAdapter
【排版用了两个linearlayout】
ArrayAdapter部分的Java代码:
SimpleAdapter的java代码:
ExbandableListView【可扩展的】
ExpandableListView是一个垂直滚动显示两级列表项的视图;
ExpandableListView可以有两层:
每一层都能够被独立的展开并显示其子项;这些子项的数据来自于与该视图关联的BaseExpandableListAdapter;
每一个可以扩展的列表项的旁边都有一个指示符(箭头)用来说明该列表项目前的状态(这些状态一般是已扩展开的列表项,还没有扩展开的列表项,子列表项和最后一个子列表项);
和ListView一样, ExpandableListView也是一个需要Adapter作为桥梁来取得数据的控件,一般适用于ExpandableListView的Adapter都要继承BaseExpandableListAdapter这个类,并且必须重写getGroupView和gpetChidview两个最重要的方法。
ExbandableListView设计步骤
- 布局文件设计
主界面布局文件的设计
组选项布局文件的设计
子选项布局文件的设计
- 设计自定义显示的适配器,继承BaseExpandableListAdapter类;
主要需要实现getGroupView和getChildView两个最重要的方法;
getGroupView和getChildView这两个方法主要是将组数据和子项目数据通过Adpter显示到对应的组界面和子界面上;
- ExpandableListView设置适配器,并添加点击事件。
期待中的页面
我的出现了这个错误,别的小测试运行都还正常。我也不知道为啥。
预期界面是一个类似qq分组的列表。每个人在各自的分组里,分组可以打开可以关闭。点击人物会出现一个提示。
实操部分
布局如下:
然后新建一个类,显示自定义的适配器。
这里是定义参数和适配器,以及一个方法找到相应的控件
然后将方法重写
方法的重写快捷方式如下:【将鼠标放在适配器这个方法报错的这一行上,点击alt+shift+enter,出现的界面点击ok就行了】
将各个方法重写成如下所示:
然后写主函数的Java代码: