转载!!!
1 直接上代码
2
3 [java]
4 public class MyActivity extends Activity implements HandleClick{
5
6
7 private ExpandableListView listView;
8
9 private int lastClick = -1;//上一次点击的group的position
10
11 public void onCreate(Bundle savedInstanceState) {
12 super.onCreate(savedInstanceState);
13 setContentView(R.layout.main);
14
15 listView = (ExpandableListView)findViewById(R.id.listView);
16 //去掉前面的箭头图标
17 listView.setGroupIndicator(null);
18
19 MyExpandAdapter adapter = new MyExpandAdapter(this);
20 adapter.setHnadleClick(this);
21 listView.setAdapter(adapter);
22
23
24 listView.setOnGroupClickListener(new OnGroupClickListener() {
25 public boolean onGroupClick(ExpandableListView parent, View v,
26 int groupPosition, long id) {
27
28 if(lastClick == -1)
29 {
30 listView.expandGroup(groupPosition);
31 }
32
33 if(lastClick != -1 && lastClick != groupPosition)
34 {
35 listView.collapseGroup(lastClick);
36 listView.expandGroup(groupPosition);
37 }
38 else if(lastClick == groupPosition)
39 {
40 if(listView.isGroupExpanded(groupPosition))
41 listView.collapseGroup(groupPosition);
42 else if(!listView.isGroupExpanded(groupPosition))
43 listView.expandGroup(groupPosition);
44 }
45
46 lastClick = groupPosition;
47 return true;
48 }
49 });
50 }
51
52
53 public void handleClick(int type) {
54
55 Toast.makeText(MyActivity.this, "...点了一下...", Toast.LENGTH_SHORT).show();
56 }
57 }
58
59 适配器:
60 [java]
61 public class MyExpandAdapter extends BaseExpandableListAdapter{
62
63 private Context context;
64 private String[] roomName = new String[]{"房间1","房间2","房间3","房间4","房间5"};
65 private String[] peoNum = new String[]{"1323人","6654人","86554人","6565人","7967人"};
66 private String[] startTime = new String[]{"马上开始","1分钟","2分钟","3分钟","4分钟"};
67
68 private HandleClick handleClick;
69
70 public interface HandleClick
71 {
72 public void handleClick(int type);
73 }
74
75 public void setHnadleClick(HandleClick hc)
76 {
77 this.handleClick = hc;
78 }
79
80 public MyExpandAdapter(Context context)
81 {
82 this.context = context;
83 }
84
85 public boolean isChildSelectable(int groupPosition, int childPosition) {
86 // TODO Auto-generated method stub
87 return false;
88 }
89
90 @Override
91 public boolean hasStableIds() {
92 // TODO Auto-generated method stub
93 return false;
94 }
95
96 @Override
97 public View getGroupView(int groupPosition, boolean isExpanded,
98 View convertView, ViewGroup parent) {
99
100 convertView = (RelativeLayout)RelativeLayout.inflate(context, R.layout.group, null);
101 TextView tv_roomName = (TextView)convertView.findViewById(R.id.tv_roomName);
102 TextView tv_time = (TextView)convertView.findViewById(R.id.tv_time);
103 TextView tv_peoNum = (TextView)convertView.findViewById(R.id.tv_peoNum);
104
105 tv_roomName.setText(roomName[groupPosition]);
106 tv_time.setText(peoNum[groupPosition]);
107 tv_peoNum.setText(startTime[groupPosition]);
108
109 return convertView;
110 }
111
112 @Override
113 public long getGroupId(int groupPosition) {
114 // TODO Auto-generated method stub
115 return 0;
116 }
117
118 @Override
119 public int getGroupCount() {
120 // TODO Auto-generated method stub
121 return roomName.length;
122 }
123
124 @Override
125 public Object getGroup(int groupPosition) {
126 // TODO Auto-generated method stub
127 return null;
128 }
129
130 @Override
131 public int getChildrenCount(int groupPosition) {
132 // TODO Auto-generated method stub
133 return 1;
134 }
135
136 @Override
137 public View getChildView(int groupPosition, int childPosition,
138 boolean isLastChild, View convertView, ViewGroup parent) {
139
140 convertView = (LinearLayout)LinearLayout.inflate(context, R.layout.child, null);
141
142 TextView child_startTime = (TextView)convertView.findViewById(R.id.child_startTime);
143 TextView child_peoNum = (TextView)convertView.findViewById(R.id.child_peoNum);
144 Button child_button = (Button)convertView.findViewById(R.id.child_button);
145
146 child_startTime.setText(startTime[groupPosition]);
147 child_peoNum.setText(peoNum[groupPosition]);
148 child_button.setOnClickListener(new OnClickListener() {
149 public void onClick(View v) {
150
151 handleClick.handleClick(1);
152 }
153 });
154
155 return convertView;
156 }
157
158 public long getChildId(int groupPosition, int childPosition) {
159 // TODO Auto-generated method stub
160 return 0;
161 }
162
163 @Override
164 public Object getChild(int groupPosition, int childPosition) {
165 // TODO Auto-generated method stub
166 return null;
167 }
168
169 }