ExpandableListView控件使用

本文介绍如何在Android中实现展开列表视图,通过创建自定义适配器和使用ExpandableListView组件来展示分组数据。展示了初始化数据、设置布局参数、适配器和展开特定分组的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<pre name="code" class="html"><?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    
    <item android:state_expanded="true" android:drawable="@drawable/ic_launcher" />   
    <item android:drawable="@drawable/ic_launcher"></item>   


</selector>

 

package com.example.expendlistview;

import java.util.ArrayList;
import java.util.List;

import android.os.Bundle;
import android.app.Activity;
import android.view.Gravity;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.TextView;

public class MainActivity extends Activity {
	private List<String> group = new ArrayList<String>();
	private List<List<String>> childs = new ArrayList<List<String>>();

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		ExpandableListView expendlistview = (ExpandableListView) findViewById(R.id.expandlistview);

		initData();
		// 设置拖动列表的时候防止出现黑色背景
		expendlistview.setCacheColorHint(0); 
		expendlistview.setGroupIndicator(getResources().getDrawable(R.drawable.ic_launcher));
		expendlistview.setAdapter(new Myadapt());
		
		//从1组开始
		expendlistview.expandGroup(1); 

	}

	private void initData() {

		addInfo("李子", new String[] { "天空", "t", "id-54654654" });
		addInfo("梅子", new String[] { "大海", "h", "id-67546454" });
		addInfo("桃子", new String[] { "陆地", "l", "id-64546654" });

	}

	private void addInfo(String groups, String[] child) {
		group.add(groups);
		List<String> temp = new ArrayList<String>();
		for (int i = 0; i < child.length; i++) {
			
			temp.add(child[i]);
			

		}
		childs.add(temp);

	}

	private class Myadapt extends BaseExpandableListAdapter {

		@Override
		public int getGroupCount() {

			return group.size();
		}

		@Override
		public int getChildrenCount(int groupPosition) {

			return childs.get(groupPosition).size();
		}

		@Override
		public Object getGroup(int groupPosition) {

			return group.get(groupPosition);
		}

		@Override
		public Object getChild(int groupPosition, int childPosition) {

			return childs.get(groupPosition).get(childPosition);
		}

		@Override
		public long getGroupId(int groupPosition) {

			return groupPosition;
		}

		@Override
		public long getChildId(int groupPosition, int childPosition) {

			return childPosition;
		}

		@Override
		public boolean hasStableIds() {

			return false;
		}

		@Override
		public View getGroupView(int groupPosition, boolean isExpanded,
				View convertView, ViewGroup parent) {

			String str = group.get(groupPosition);
			return getGenericView(str);
		}

		@Override
		public View getChildView(int groupPosition, int childPosition,
				boolean isLastChild, View convertView, ViewGroup parent) {
			String str = childs.get(groupPosition).get(childPosition);

			return getGenericView(str);
		}

		public TextView getGenericView(String s) {
			// Layout parameters for the ExpandableListView
			AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
					ViewGroup.LayoutParams.FILL_PARENT, 40);

			TextView text = new TextView(MainActivity.this);
			text.setLayoutParams(lp);
			// Center the text vertically
			text.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
			// Set the text starting position
			text.setPadding(36, 0, 0, 0);

			text.setText(s);
			return text;
		}

		@Override
		public boolean isChildSelectable(int groupPosition, int childPosition) {

			return true;
		}

	}

}



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值