在我们的项目开发过程,用户通常拥有的信息包,通过组来显示用户的信息,一时候通过一定的查询条件来显示查询后的相关用户信息。而且通过颜色选择器来设置列表信息的背景颜色。
当中借鉴xiaanming:http://blog.csdn.net/xiaanming/article/details/12684155
以下来看看项目执行后的效果图以及代码结构图:
以下通过代码来实现整个效果。
1.主界面布局activity_main.xml
分析:主界面主要有一个Button,一个自己定义搜索的ClearEditText,一个无查询结果的TextView,一个列表信息显示ExpandableListView。
当中Button主要用来生成列表信息。
2.自己定义的ClearEditText的搜索框CliearEditText.java
搜索框颜色选择器:
3.汉字拼音排序所须要的汉字转拼音:CharacterParser.java
4. 拼音比較类:PinyinComparator.java
5. 显示列表信息的名字以及其拼音首字母 GrouMemberBean.java
6.ExpandaleListView 适配器MyExpandableAdapter.java
分析:
GroupHolderView:用于显示组信息
ChildHolderView:用于显示组下成员信息。包含一个LinearLayout,一个ImageView,一个TextVIew
private List<GroupMemberBean> mGroup; 包括组的全部List信息
private List<List<GroupMemberBean>> mChild;包括全部的组下成员信息
依据传入的mGroup,mChild来更新列表信息。
7.GroupHolderView类所相应的activity_group.xml
8.ChildHolderView类所相应的activity_child.xml
>
<LinearLayout xmlns:andro
android:
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/my_child_selector"
android:orientation="horizontal" >
<ImageView
android:
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/ic_launcher" />
<TextView
android:
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout></span>
分析:依据android:background="@drawable/my_child_selector" 颜色选择器来设置每一个列表行(选中或正常)的背景色。
9.颜色选择器my_child_selector.xml
>
<selector xmlns:andro>
<item android:state_focused="true" android:drawable="@color/press_color"></item>
<item android:state_pressed="true" android:drawable="@color/press_color"></item>
<item android:drawable="@color/normal_color"></item>
</selector></span>
10.主界面实现代码:MainActivity.java
分析:
用于生成列表信息
依据 res->array定义的字符数组,转化为List<GroupMemberBean>
依据查询条件更新列表信息。
重点:1.假设查询的条件为空,直接更新列表初始状态;
假如:filterStr = “g”;
2.假设查询的结果为空,直接给出“未搜索到结果”提示;
3.假设Group中包括filterStr,GroupMemberBean sortModel 直接增加groupFilterList,并标记已增加isAddGroup = true;
假设Child中包括filterStr,定义暂时的tempFilterList,GroupMemberBean sortChildModel增加到childFilterList。假设groupFilterList不包括其父组,并将其父增加到groupFilterList。并标记已增加isAddGroup=true;
最后假设isAddGroup=true,将tempFilterList增加到childFilterList。
4.通过myAdapter.updateListView(groupFilterList, childFilterList),更新列表信息。
其上为本博文的全部内容。
源码下载:
http://download.csdn.net/detail/a123demi/7623975
版权声明:本文博客原创文章,博客,未经同意,不得转载。