Android 手风琴效果实现

ExpandableListView 基础知识  
1. ExpandableListView 的总体概述  
  ExpandableListView 是 android 中可以实现下拉 list 的一个控件,是一个垂直滚动的心事两个级  
别列表项手风琴试图,列表项是来自 ExpandableListViewaAdapter,组可以单独展开。  
2.重要的方法:  
  expandGroup (int groupPos) ;//在分组列表视图中 展开一组,  
  setSelectedGroup (int groupPosition) ;//设置选择指定的组。  
  setSelectedChild (int groupPosition, int childPosition, boolean shouldExpandGroup);  
  getPackedPositionGroup (long packedPosition);//返回所选择的组  
  isGroupExpanded (int groupPosition);//判断此组是否展开  
  expandableListView.setDivider();这个是设定每个 Group 之间的分割线。  
  expandableListView.setGroupIndicator();这个是设定每个 Group 之前的那个图标。  
  expandableListView.collapseGroup(int group); 将第 group 组收起  
3. 适配器的介绍  
  ExpandableListAdapter,一个接口,将基础数据链接到一个 ExpandableListView。 此接  
口的实施将提供访问 Child 的数由组分类实例化的 Child 和 Group配器中常用的重  
要方法:  
  getChildId (int groupPosition, int childPosition) 获取与在给定组给予孩子相关的数据。  
  getChildrenCount (int groupPosition) 返回在指定 Group 的 Child 数目  
4. 属性和事件  
1) 在 Android 中对子条目的点击事件是通过 onChildClick()来实现  
 
2) 对组的点击事件是通过 onGroupClick()来实现的  
 Gson 框架:
它是谷歌推出的一个请求网络数据的一个框架,常用的用法如下:  
  1) GSON 的两个重要方法  
在 GSON 的 API 中,提供了两个重要的方法:toJson()和 fromJson()方法。其中,toJson()方法  
用来实现将 Java 对象转换为相应的 JSON 数据,fromJson()方法则用来实现将 JSON 数据转换为  
相应的 Java 对象。  
  2) toJson()方法,toJson()方法用于将 Java 对象转换为相应的 JSON 数据,主要有以下几种形式:  
  String toJson(JsonElement jsonElement);  
  String toJson(Object src);  
  String toJson(Object src, Type typeOfSrc);  
其中,方法(1.1)用于将 JsonElement 对象(可以是 JsonObjectJsonArray 等)转换成 JSON  
数据;方法(1.2)用于将指定的 Object 对象序列化成相应的 JSON 数据;方法(3)用于将指定  
的 Object 对象(可以包括泛型类型)序列化成相应的 JSON 数据。  
3) 1.2 fromJson()方法  
fromJson()方法用于将 JSON 数据转换为相应的 Java 对象,主要有以下几种形式:  
1<T> T fromJson(JsonElement json, Class<T> classOfT);  
2<T> T fromJson(JsonElement json, Type typeOfT);  
3<T> T fromJson(JsonReader reader, Type typeOfT);  
5<T> T fromJson(Reader reader, Type typeOfT);  
6<T> T fromJson(String json, Class<T> classOfT);  
7<T> T fromJson(String json, Type typeOfT);  
以上的方法用于将不同形式的 JSON 数据解析成 Java 对象。  
 
所以说 gson 是一个很好的请求网络数据的框架,既可以在服务器端生成一个 json 字符串,然后  
客户端通过发送请求向服务器端,进行数据解析。  
5. Picasso 框架  
  这也是本课程中涉及的一个第三方的框架,它主要是用于网络请求图片时的一种框架,它的  
代码量少,自带缓存,是一个值得使用的框架。首先 Picasso 也是 Afinal 这个框架的一种,  
Afinal 是一个 android 的 iocorm 框架,内置了四大模块功能:  
FinalAcitivity,FinalBitmap,FinalDb,FinalHttp。通过 finalActivity,我们可以通过注解的方式进  
行绑定 ui 和事件。通过 finalBitmap,我们可以方便的加载 bitmap 图片,而无需考虑 oom 等  
问题。通过 finalDB 模块,我们一行代码就可以对 android 的 sqlite 数据库进行增删改查。通过  
FinalHttp 模块,我们可以以 ajax 形式请求 http 数据。  

ExpandableListView 和 ExpandableListActivity

如何获取 ExpandableListView对象
1.可以直接在xml布局中添加 ExpandableListView 在activity中通过id绑定控件
2.activity 继承 ExpandableListActivity 通过 getExpandableListView 方法获取

ExpandableListView的常用属性
android:groupIndicator="" 设置可扩展组图标提示

点击事件
  //设置组点击事件
        //
        melv.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
            @Override
            public boolean onGroupClick(ExpandableListView expandableListView, View view, int i, long l) {
                return false;
            }
        });
        //设置字条目点击事件
        melv.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
            @Override
            public boolean onChildClick(ExpandableListView expandableListView, View view, int i, int i1, long l) {
                return false;
            }
        });

 下面进入demo环节

1.实现手风琴效果  获取本地数据

 
 

猜你喜欢

转载自www.cnblogs.com/conglingkaishi/p/9458795.html