前阵子做一个APP,一直也没找到一个很好的实现分组显示列表的方法,今天有心查了查,发现一个好的实现方法,收藏下,亲自测试很好,不多说了,直接贴出源码:
package com.android.fenzu;
import android.app.ExpandableListActivity;
import android.os.Bundle;
public class fenzu extends ExpandableListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setListAdapter(new IdeasExpandableListAdapter(this));
}
}
package com.android.fenzu;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.BaseExpandableListAdapter;
import android.widget.TextView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
public class IdeasExpandableListAdapter extends BaseExpandableListAdapter {
private Context mContext = null;
private String[] groups = { "家人", "朋友", "同事" };
private String[] familis = { "老爸", "老妈", "妹妹" };
private String[] friends = { "小李", "张三", "李四" };
private String[] colleagues = { "陈总", "李工", "李客户" };
private List<String> groupList = null;
private List<List<String>> itemList = null;
public IdeasExpandableListAdapter(Context context) {
this.mContext = context;
groupList = new ArrayList<String>();
itemList = new ArrayList<List<String>>();
initData();
}
private void initData() {
for (int i = 0; i < groups.length; i++) {
groupList.add(groups[i]);
}
List<String> item1 = new ArrayList<String>();
for (int i = 0; i < familis.length; i++) {
item1.add(familis[i]);
}
List<String> item2 = new ArrayList<String>();
for (int i = 0; i < friends.length; i++) {
item2.add(friends[i]);
}
List<String> item3 = new ArrayList<String>();
for (int i = 0; i < colleagues.length; i++) {
item3.add(colleagues[i]);
}
itemList.add(item1);
itemList.add(item2);
itemList.add(item3);
}
public boolean areAllItemsEnabled() {
return false;
}
public Object getChild(int groupPosition, int childPosition) {
return itemList.get(groupPosition).get(childPosition);
}
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
TextView text = null;
if (convertView == null) {
text = new TextView(mContext);
} else {
text = (TextView) convertView;
}
// 获取子节点要显示的名称
String name = (String) itemList.get(groupPosition).get(childPosition);
// 设置文本视图的相关属性
AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT, 40);
text.setLayoutParams(lp);
text.setTextSize(18);
text.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
text.setPadding(45, 0, 0, 0);
text.setText(name);
return text;
}
public int getChildrenCount(int groupPosition) {
return itemList.get(groupPosition).size();
}
public Object getGroup(int groupPosition) {
return groupList.get(groupPosition);
}
public int getGroupCount() {
return groupList.size();
}
public long getGroupId(int groupPosition) {
return groupPosition;
}
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
TextView text = null;
if (convertView == null) {
text = new TextView(mContext);
} else {
text = (TextView) convertView;
}
String name = (String) groupList.get(groupPosition);
AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT, 40);
text.setLayoutParams(lp);
text.setTextSize(18);
text.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
text.setPadding(36, 0, 0, 0);
text.setText(name);
return text;
}
public boolean isEmpty() {
return false;
}
public void onGroupCollapsed(int groupPosition) {
}
public void onGroupExpanded(int groupPosition) {
}
public boolean hasStableIds() {
return false;
}
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
}
![Android开发---类似QQ分组列表的实现案例 Android开发---类似QQ分组列表的实现案例](https://i-blog.csdnimg.cn/blog_migrate/13f51903679ba0c18456780e2e958028.jpeg)