在我们的项目开发过程,用户通常拥有的信息包,通过组来显示用户的信息,一时候通过一定的查询条件来显示查询后的相关用户信息。而且通过颜色选择器来设置列表信息的背景颜色。

当中借鉴xiaanming:http://blog.csdn.net/xiaanming/article/details/12684155

以下来看看项目执行后的效果图以及代码结构图:

具体评论ExpandableListView显示和查询模仿QQ组列表用户信息具体评论ExpandableListView显示和查询模仿QQ组列表用户信息具体评论ExpandableListView显示和查询模仿QQ组列表用户信息具体评论ExpandableListView显示和查询模仿QQ组列表用户信息


以下通过代码来实现整个效果。

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


版权声明:本文博客原创文章,博客,未经同意,不得转载。

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-08
  • 2022-02-03
  • 2021-08-27
  • 2021-12-17
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-08-05
  • 2021-07-12
  • 2022-12-23
  • 2022-01-22
相关资源
相似解决方案