ExpandableListView是android中可以实现下拉list的一个控件,是一个垂直滚动的心事两个级别列表项手风琴试图,列表项是来自ExpandableListViewaAdapter,组可以单独展开。

重要方法:

 expandGroup (int groupPos) ;//在分组列表视图中 展开一组,
setSelectedGroup (int groupPosition) ;//设置选择指定的组。 setSelectedChild (int groupPosition, int childPosition, boolean shouldExpandGroup);//设置选择指定的子项。 getPackedPositionGroup (long packedPosition);//返回所选择的组 getPackedPositionForChild (int groupPosition, int childPosition) ;//返回所选择的子项 getPackedPositionType (long packedPosition);//返回所选择项的类型(Child,Group) isGroupExpanded (int groupPosition);//判断此组是否展开

expandableListView.setDivider();这个是设定每个Group之间的分割线。

expandableListView.setGroupIndicator();这个是设定每个Group之前的那个图标。

expandableListView.collapseGroup(int group); 将第group组收起

ExpandableListAdapter

一个接口,将基础数据链接到一个ExpandableListView。 此接口的实施将提供访问Child的数据(由组分类),并实例化的Child和Group。

1.重要方法

    getChildId (int groupPosition, int childPosition) 获取与在给定组给予孩子相关的数据。

    getChildrenCount (int groupPosition) 返回在指定Group的Child数目。

案例:

首先定义个一个布局文件expandablelistview.xml

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ExpandableListView
android:id ="@+id/expandableListView"
android:layout_width ="fill_parent"
android:layout_height ="wrap_content"
>
</ExpandableListView>
</LinearLayout>
 package com.test;

 import java.util.ArrayList;
import java.util.List; import javax.security.auth.PrivateCredentialPermission; import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.AbsListView;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.TextView; public class ExpandableListViewDemo extends Activity {
/** Called when the activity is first created. */ //定义两个List用来控制Group和Child中的String; private List<String> groupArray;//组列表
private List<List<String>> childArray;//子列表
private ExpandableListView expandableListView_one; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// requestWindowFeature(Window.FEATURE_NO_TITLE); //设置为无标题
setContentView(R.layout.expandablelistview);
expandableListView_one =(ExpandableListView)findViewById(R.id.expandableListView);
groupArray =new ArrayList<String>();
childArray = new ArrayList<List<String>>(); /*-第一季-*/
initdate();
expandableListView_one.setAdapter(new ExpandableListViewaAdapter(ExpandableListViewDemo.this)); /*-第二季-*/
// groupArray.add("移动开发");
// List<String> arrayList = new ArrayList<String>();
// arrayList.add("Android");
// arrayList.add("IOS");
// arrayList.add("Windows Phone");
// //组循环
// for(int index=0;index<groupArray.size();++index)
// {
// childArray.add(arrayList);
// }
// expandableListView_one.setAdapter(new ExpandableListViewaAdapter(ExpandableListViewDemo.this)); }
class ExpandableListViewaAdapter extends BaseExpandableListAdapter {
Activity activity;
public ExpandableListViewaAdapter(Activity a)
{
activity = a;
}
/*-----------------Child */
@Override
public Object getChild(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return childArray.get(groupPosition).get(childPosition);
} @Override
public long getChildId(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return childPosition;
} @Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) { String string =childArray.get(groupPosition).get(childPosition); return getGenericView(string);
} @Override
public int getChildrenCount(int groupPosition) {
// TODO Auto-generated method stub
return childArray.get(groupPosition).size();
}
/* ----------------------------Group */
@Override
public Object getGroup(int groupPosition) {
// TODO Auto-generated method stub
return getGroup(groupPosition);
} @Override
public int getGroupCount() {
// TODO Auto-generated method stub
return groupArray.size();
} @Override
public long getGroupId(int groupPosition) {
// TODO Auto-generated method stub
return groupPosition;
} @Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) { String string=groupArray.get(groupPosition);
return getGenericView(string);
} @Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return false;
} @Override
public boolean isChildSelectable(int groupPosition, int childPosition)
{
// TODO Auto-generated method stub
return true;
} private TextView getGenericView(String string )
{
AbsListView.LayoutParams layoutParams =new AbsListView.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT); TextView textView =new TextView(activity);
textView.setLayoutParams(layoutParams); textView.setGravity(Gravity.CENTER_VERTICAL |Gravity.LEFT); textView.setPadding(40, 0, 0, 0);
textView.setText(string);
return textView;
}
} private void initdate()
{
addInfo("语言", new String[]{"Oracle","Java","Linux","Jquery"});
addInfo("男人的需求", new String[]{"金钱","事业","权力","女人","房子","车","球"});
}
private void addInfo(String group,String []child) { groupArray.add(group); List<String> childItem =new ArrayList<String>(); for(int index=0;index<child.length;index++)
{
childItem.add(child[index]);
}
childArray.add(childItem);
}
}

最新文章

  1. mybatis问题is not known to the MapperRegistry
  2. MS CRM 2013 Plugin 注册工具登录后空白
  3. VS2012+EF6+MYSQL配置
  4. 配置Hibernate二级缓存时,不能初始化RegionFactory的解决办法
  5. 软件开发之路、Step 1 需求分析
  6. javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection
  7. php中的curl】php中curl的详细解说
  8. RCP,TCP,C/S,B/S
  9. 关于hibernate映射过程中的笔记
  10. easyui在当前tab中直接加载url
  11. BNUOJ34990--Justice String (exkmp求最长公共前缀)
  12. matlab绘制函数
  13. 随机逻辑回归random logistic regression-特征筛选
  14. 在Mac下安装mongodb
  15. Oracle高效分页查询(转)
  16. 洛谷P5072 [Ynoi2015]盼君勿忘 [莫队]
  17. bat语法需要注意的地方
  18. Confluence 6 配置用户目录
  19. MyBatis原理系列
  20. web安全开发指南--认证

热门文章

  1. AngularJs基础总结(1.4版本)
  2. 希望各位博友能对我的自我介绍提出意见(要面试IBM的应用开发工程师,本科应届生一枚)
  3. mock.js-无需等待,让前端独立于后端进行开发
  4. js反序列化时间
  5. aperm方法
  6. JVM执行引擎总结(读《深入理解JVM》) 早期编译优化 DCE for java
  7. Ubuntu 14 添加Windows风格的底部任务栏
  8. expdp / impdp 用法详解
  9. 【转载】javaAgent 参数
  10. unity 2d 和 NGUI layer