public class MainActivity extends AppCompatActivity { private final String GROUP = "group"; private final String CHILD = "child"; private ArrayList<HashMap<String, Object>> data; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ExpandableListView elv = (ExpandableListView) findViewById(R.id.elv); elv.setGroupIndicator(null); fillData(); // 这是一个参数为空或者null的ExpandableListAdapter // 构造在子类中完成 ExpandableListAdapter mExpandableListAdapter = new MyExpandableListAdapter(this, null, 0, null, null, null, 0, null, null); elv.setAdapter(mExpandableListAdapter); // 演示 // 展开0组 elv.expandGroup(0); // 收起1组 elv.collapseGroup(1); // 展开2组 elv.expandGroup(2); elv.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() { @Override public boolean onGroupClick(ExpandableListView arg0, View arg1, int arg2, long arg3) { // Android默认是返回false。 // 如果返回true,那么,不管是点击已展开的分组还是未展开的分组,都不会相应展开或者收缩的,也就是说这个ExpandableListView将成为一个‘死’的ListView return false; } }); } private class MyExpandableListAdapter extends SimpleExpandableListAdapter { private LayoutInflater inflater; public MyExpandableListAdapter(Context context, List<? extends Map<String, ?>> groupData, int groupLayout, String[] groupFrom, int[] groupTo, List<? extends List<? extends Map<String, ?>>> childData, int childLayout, String[] childFrom, int[] childTo) { super(context, groupData, groupLayout, groupFrom, groupTo, childData, childLayout, childFrom, childTo); inflater = LayoutInflater.from(context); } @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { View view = inflater.inflate(android.R.layout.simple_list_item_1, null); TextView text = (TextView) view.findViewById(android.R.id.text1); text.setText(getChild(groupPosition, childPosition) + ""); return view; } @Override public int getChildrenCount(int groupPosition) { ArrayList<String> items = (ArrayList<String>) data.get(groupPosition).get(CHILD); return items.size(); } @Override public int getGroupCount() { return data.size(); } @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { View view = inflater.inflate(android.R.layout.simple_list_item_1, null); TextView text = (TextView) view.findViewById(android.R.id.text1); text.setText(getGroup(groupPosition) + ""); view.setBackgroundColor(Color.RED); return view; } @Override public Object getChild(int groupPosition, int childPosition) { ArrayList<String> items = (ArrayList<String>) data.get(groupPosition).get(CHILD); return items.get(childPosition); } @Override public Object getGroup(int groupPosition) { return data.get(groupPosition).get(GROUP); } } //填充数据 public void fillData(){ // 分组的标签 String[] g = { "A", "B", "C", "D", "E", "F" }; data = new ArrayList<HashMap<String, Object>>(); // 子数据的计数 int COUNT = 0; Random rand = new Random(); for (int i = 0; i < g.length; i++) { HashMap<String, Object> map = new HashMap<String, Object>(); map.put(GROUP, g[i]); ArrayList<String> child = new ArrayList<String>(); int c = rand.nextInt(10);// 为每个子List随机生成c个测试数据。 for (int j = 0; j < c; j++) { child.add("数据" + COUNT++); } map.put(CHILD, child); data.add(map); } } }
Android菜鸟练习第二十八课 ExpandableListView的使用
最新推荐文章于 2019-04-23 15:50:41 发布