java 下拉列表 可折叠 qq分组_QQ分组实现,可收缩---ExpandableListView

1 packagecom.zzw.qqgroup;2

3 importjava.util.ArrayList;4 importjava.util.HashMap;5 importjava.util.List;6 importjava.util.Map;7 importjava.util.Random;8

9 importandroid.app.Activity;10 importandroid.content.Context;11 importandroid.graphics.Color;12 importandroid.os.Bundle;13 importandroid.view.LayoutInflater;14 importandroid.view.View;15 importandroid.view.View.OnClickListener;16 importandroid.view.ViewGroup;17 importandroid.widget.EditText;18 importandroid.widget.ExpandableListView;19 importandroid.widget.ExpandableListView.OnGroupClickListener;20 importandroid.widget.SimpleExpandableListAdapter;21 importandroid.widget.TextView;22

23 public class MainActivity extendsActivity {24

25 private final String GROUP = "group";26 private final String CHILD = "child";27

28 privateEditText editText;29 privateMyExpandableListAdapter mExpandableListAdapter;30

31 private ArrayList>data;32

33 @Override34 protected voidonCreate(Bundle savedInstanceState) {35 super.onCreate(savedInstanceState);36 setContentView(R.layout.activity_main);37

38 data = new ArrayList>();39

40 editText =(EditText) findViewById(R.id.editText);41

42 rawData();43

44 ExpandableListView elv =(ExpandableListView) findViewById(R.id.expandableListView);45 elv.setGroupIndicator(null);//使收缩箭头消失

46

47 mExpandableListAdapter = new MyExpandableListAdapter(this, null, 0, 0, null, null, null, 0, null, null);48

49 elv.setAdapter(mExpandableListAdapter);50

51 /*

52 * 下面是演示53 */

54 //elv.expandGroup(0);//展开0组55 //elv.collapseGroup(1);//收起1组

56

57 elv.setOnGroupClickListener(newOnGroupClickListener() {58

59 @Override60 public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, longid) {61 /*

62 * 安卓默认是返回false 如果返回true,则不管是点击已展开的分组还是未展开的分组都不会相应展开或者收缩的63 */

64 return false;65 }66 });67

68 findViewById(R.id.addGroup).setOnClickListener(newOnClickListener() {69 @Override70 public voidonClick(View v) {71 addGroup(2);72 }73 });74

75 findViewById(R.id.addChild).setOnClickListener(newOnClickListener() {76 @Override77 public voidonClick(View v) {78 addChild(2);79 }80 });81 }82

83 //在指定位置添加组

84 private void addGroup(intpos) {85 String str = editText.getText() + "";86 if (!str.trim().equals("")) {87 HashMap map = new HashMap();88 map.put(GROUP, str);89 ArrayList childs = new ArrayList();90 map.put(CHILD, childs);91 data.add(pos, map);92 editText.setText("");93 mExpandableListAdapter.notifyDataSetChanged();94 }95 }96

97 //在尾部增加组

98 private voidaddGroup() {99 String str = editText.getText() + "";100 if (!str.trim().equals("")) {101 HashMap map = new HashMap();102 map.put(GROUP, str);103 ArrayList childs = new ArrayList();104 map.put(CHILD, childs);105 data.add(map);106 editText.setText("");107 mExpandableListAdapter.notifyDataSetChanged();108 }109 }110

111 //指定组中指定位置添加child数据

112 private void addChild(int groupPos, intchildPos) {113 String str = editText.getText() + "";114 if (!str.trim().equals("") && groupPos map =data.get(groupPos);116 ArrayList childs = (ArrayList) map.get(CHILD);117 if (childPos

125 //指定组中尾部位置增加child元素

126 private void addChild(intgroupPos) {127 String str = editText.getText() + "";128 if (!str.trim().equals("") && groupPos map =data.get(groupPos);130 ArrayList childs = (ArrayList) map.get(CHILD);131 childs.add(str);132 editText.setText("");133 mExpandableListAdapter.notifyDataSetChanged();134

135 }136 }137

138 //初始化增加数据

139 private voidrawData() {140 //设置分组

141 String[] g = { "我的好友", "朋友", "同学", "同事"};142 String[] c = { "张三", "李四", "王二", "麻子", "钱五"};143

144 Random rand = newRandom();145 for (int i = 0; i < g.length; i++) {146 int count = 0;147 HashMap map = new HashMap();148 map.put(GROUP, g[i]);149

150 ArrayList child = new ArrayList();151 int r = rand.nextInt(10);152 for(String ch : c) {153 child.add("-------" + ch + count++);154 }155 map.put(CHILD, child);156

157 data.add(map);158 }159 }160

161 private class MyExpandableListAdapter extendsSimpleExpandableListAdapter {162 LayoutInflater inflater;163

164 public MyExpandableListAdapter(Context context, List extends Map>groupData,165 int expandedGroupLayout, int collapsedGroupLayout, String[] groupFrom, int[] groupTo,166 List extends List extends Map>> childData, intchildLayout, String[] childFrom,167 int[] childTo) {168 super(context, groupData, expandedGroupLayout, collapsedGroupLayout, groupFrom, groupTo, childData,169 childLayout, childFrom, childTo);170 inflater =LayoutInflater.from(context);171 }172

173 @Override174 public Object getChild(int groupPosition, intchildPosition) {175 ArrayList items = (ArrayList) data.get(groupPosition).get(CHILD);176

177 returnitems.get(childPosition);178 }179

180 @Override181 public int getChildrenCount(intgroupPosition) {182

183 ArrayList items = (ArrayList) data.get(groupPosition).get(CHILD);184 returnitems.size();185 }186

187 @Override188 public Object getGroup(intgroupPosition) {189

190 returndata.get(groupPosition).get(GROUP);191 }192

193 @Override194 public intgetGroupCount() {195 returndata.size();196 }197

198 @Override199 public View getGroupView(int groupPosition, booleanisExpanded, View convertView, ViewGroup parent) {200 if (convertView == null) {201 convertView = inflater.inflate(android.R.layout.simple_list_item_1, null);202 }203 TextView textView =(TextView) convertView.findViewById(android.R.id.text1);204 textView.setText(getGroup(groupPosition) + "");205 textView.setTextColor(Color.RED);206 returnconvertView;207 }208

209 @Override210 public View getChildView(int groupPosition, int childPosition, booleanisLastChild, View convertView,211 ViewGroup parent) {212 if (convertView == null) {213 convertView = inflater.inflate(R.layout.item, null);214 }215 TextView textView =(TextView) convertView.findViewById(R.id.textView1);216 textView.setText(getChild(groupPosition, childPosition) + "");217 returnconvertView;218 }219 }220 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值