ExpandableListView是android中可以实现下拉list的一个控件,是一个垂直滚动的心事两个级别列表项手风琴试图,列表项是来自ExpandableListViewaAdapter,组可以单独展开。
重要方法:
1 expandGroup (int groupPos) ;//在分组列表视图中 展开一组, 2 setSelectedGroup (int groupPosition) ;//设置选择指定的组。 3 4 setSelectedChild (int groupPosition, int childPosition, boolean shouldExpandGroup);//设置选择指定的子项。 5 6 getPackedPositionGroup (long packedPosition);//返回所选择的组 7 8 getPackedPositionForChild (int groupPosition, int childPosition) ;//返回所选择的子项 9 10 getPackedPositionType (long packedPosition);//返回所选择项的类型(Child,Group) 11 12 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
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="fill_parent" 4 android:layout_height="fill_parent" 5 android:orientation="vertical" > 6 <ExpandableListView 7 android:id ="@+id/expandableListView" 8 android:layout_width ="fill_parent" 9 android:layout_height ="wrap_content" 10 > 11 </ExpandableListView> 12 </LinearLayout>
1 package com.test;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import javax.security.auth.PrivateCredentialPermission;
7
8 import android.app.Activity;
9 import android.os.Bundle;
10 import android.view.Gravity;
11 import android.view.View;
12 import android.view.ViewGroup;
13 import android.view.Window;
14 import android.widget.AbsListView;
15 import android.widget.BaseExpandableListAdapter;
16 import android.widget.ExpandableListView;
17 import android.widget.TextView;
18
19 public class ExpandableListViewDemo extends Activity {
20 /** Called when the activity is first created. */
21
22 //定义两个List用来控制Group和Child中的String;
23
24 private List<String> groupArray;//组列表
25 private List<List<String>> childArray;//子列表
26 private ExpandableListView expandableListView_one;
27
28 @Override
29 public void onCreate(Bundle savedInstanceState) {
30 super.onCreate(savedInstanceState);
31 // requestWindowFeature(Window.FEATURE_NO_TITLE); //设置为无标题
32 setContentView(R.layout.expandablelistview);
33 expandableListView_one =(ExpandableListView)findViewById(R.id.expandableListView);
34 groupArray =new ArrayList<String>();
35 childArray = new ArrayList<List<String>>();
36
37 /*-第一季-*/
38 initdate();
39 expandableListView_one.setAdapter(new ExpandableListViewaAdapter(ExpandableListViewDemo.this));
40
41 /*-第二季-*/
42 // groupArray.add("移动开发");
43 // List<String> arrayList = new ArrayList<String>();
44 // arrayList.add("Android");
45 // arrayList.add("IOS");
46 // arrayList.add("Windows Phone");
47 // //组循环
48 // for(int index=0;index<groupArray.size();++index)
49 // {
50 // childArray.add(arrayList);
51 // }
52 // expandableListView_one.setAdapter(new ExpandableListViewaAdapter(ExpandableListViewDemo.this));
53
54 }
55 class ExpandableListViewaAdapter extends BaseExpandableListAdapter {
56 Activity activity;
57 public ExpandableListViewaAdapter(Activity a)
58 {
59 activity = a;
60 }
61 /*-----------------Child */
62 @Override
63 public Object getChild(int groupPosition, int childPosition) {
64 // TODO Auto-generated method stub
65 return childArray.get(groupPosition).get(childPosition);
66 }
67
68 @Override
69 public long getChildId(int groupPosition, int childPosition) {
70 // TODO Auto-generated method stub
71 return childPosition;
72 }
73
74 @Override
75 public View getChildView(int groupPosition, int childPosition,
76 boolean isLastChild, View convertView, ViewGroup parent) {
77
78 String string =childArray.get(groupPosition).get(childPosition);
79
80 return getGenericView(string);
81 }
82
83 @Override
84 public int getChildrenCount(int groupPosition) {
85 // TODO Auto-generated method stub
86 return childArray.get(groupPosition).size();
87 }
88 /* ----------------------------Group */
89 @Override
90 public Object getGroup(int groupPosition) {
91 // TODO Auto-generated method stub
92 return getGroup(groupPosition);
93 }
94
95 @Override
96 public int getGroupCount() {
97 // TODO Auto-generated method stub
98 return groupArray.size();
99 }
100
101 @Override
102 public long getGroupId(int groupPosition) {
103 // TODO Auto-generated method stub
104 return groupPosition;
105 }
106
107 @Override
108 public View getGroupView(int groupPosition, boolean isExpanded,
109 View convertView, ViewGroup parent) {
110
111 String string=groupArray.get(groupPosition);
112 return getGenericView(string);
113 }
114
115 @Override
116 public boolean hasStableIds() {
117 // TODO Auto-generated method stub
118 return false;
119 }
120
121 @Override
122 public boolean isChildSelectable(int groupPosition, int childPosition)
123 {
124 // TODO Auto-generated method stub
125 return true;
126 }
127
128 private TextView getGenericView(String string )
129 {
130 AbsListView.LayoutParams layoutParams =new AbsListView.LayoutParams(
131 ViewGroup.LayoutParams.MATCH_PARENT,
132 ViewGroup.LayoutParams.WRAP_CONTENT);
133
134 TextView textView =new TextView(activity);
135 textView.setLayoutParams(layoutParams);
136
137 textView.setGravity(Gravity.CENTER_VERTICAL |Gravity.LEFT);
138
139 textView.setPadding(40, 0, 0, 0);
140 textView.setText(string);
141 return textView;
142 }
143 }
144
145 private void initdate()
146 {
147 addInfo("语言", new String[]{"Oracle","Java","Linux","Jquery"});
148 addInfo("男人的需求", new String[]{"金钱","事业","权力","女人","房子","车","球"});
149 }
150 private void addInfo(String group,String []child) {
151
152 groupArray.add(group);
153
154 List<String> childItem =new ArrayList<String>();
155
156 for(int index=0;index<child.length;index++)
157 {
158 childItem.add(child[index]);
159 }
160 childArray.add(childItem);
161 }
162 }
来源:https://www.cnblogs.com/huolongluo/p/5559977.html