`
Weich_JavaDeveloper
  • 浏览: 100048 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ExpandableListView

 
阅读更多

KHExpandableListAdapter.java

public class KHExpandableListAdapter extends BaseExpandableListAdapter {


	private List<Map<String, Object>> groups;

	private List<List<Map<String, Object>>> childs;

	private Context context;

	public KHExpandableListAdapter(Context context,List<Map<String, Object>> groups, List<List<Map<String, Object>>> childs){

		this.context = context;
		this.groups = groups;
		this.childs = childs;
	}

	@Override
	public Object getChild(int groupPosition, int childPosition) {
		return childs.get(groupPosition).get(childPosition);
	}

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

	@Override
	public View getChildView(int groupPosition, int childPosition,
			boolean isLastChild, View convertView, ViewGroup parent) {


		TextView childView = getGenericView();
		childView.setText(childs.get(groupPosition).get(childPosition).get("child").toString());
		return childView;
	}

	@Override
	public int getChildrenCount(int groupPosition) {
		return childs.get(groupPosition).size();
	}

	@Override
	public Object getGroup(int groupPosition) {
		return groups.get(groupPosition);
	}

	@Override
	public int getGroupCount() {
		return groups.size();
	}

	@Override
	public long getGroupId(int groupPosition) {
		return groupPosition;
	}

	@Override
	public View getGroupView(int groupPosition, boolean isExpanded,
			View convertView, ViewGroup parent) {
		
		TextView groupView = getGenericView();
		groupView.setText(groups.get(groupPosition).get("group").toString());
		return groupView;
	}

	@Override
	public boolean hasStableIds() {
		return false;
	}

	@Override
	public boolean isChildSelectable(int groupPosition, int childPosition) {
		return true;
	}

	private TextView getGenericView() {   

		AbsListView.LayoutParams lp = new AbsListView.LayoutParams(   
				ViewGroup.LayoutParams.FILL_PARENT, 36);   
		TextView textView = new TextView(context);   
		textView.setLayoutParams(lp);   
		textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);   
		textView.setPadding(36, 0, 0, 0);   
		return textView;   
	}

}

 ExpandableListViewActivity.java

public class ExpandableListViewActivity extends Activity {

	private ExpandableListView ELV;
	private List<Map<String,Object>> groups;
	private List<List<Map<String,Object>>> childs;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		ELV = new ExpandableListView(this);
		ELV.setBackgroundColor(Color.BLUE);
		groups = new ArrayList<Map<String,Object>>();
		childs = new ArrayList<List<Map<String,Object>>>();
		List<Map<String,Object>> child1 = new ArrayList<Map<String,Object>>();
		List<Map<String,Object>> child2 = new ArrayList<Map<String,Object>>();
		List<Map<String,Object>> child3 = new ArrayList<Map<String,Object>>();
		List<Map<String,Object>> child4 = new ArrayList<Map<String,Object>>();
		for(int i = 0; i < 4; i++){
			Map<String,Object> group = new HashMap<String,Object>();
			group.put("group", "第 " + i + " 组");
			groups.add(group);
		}
		
		for(int i = 0; i < 5; i++){
			Map<String,Object> child = new HashMap<String,Object>();
			child.put("child", "第 " + i + " 个child");
			child1.add(child);
			child2.add(child);
			child3.add(child);
			child4.add(child);
		}
		childs.add(child1);
		childs.add(child2);
		childs.add(child3);
		childs.add(child4);
		KHExpandableListAdapter KHA = new KHExpandableListAdapter(this,groups,childs);
		ELV.setOnChildClickListener(new OnChildClickListener(){

			@Override
			public boolean onChildClick(ExpandableListView parent, View v,
					int groupPosition, int childPosition, long id) {
//				Toast.makeText(ExpandableListViewActivity.this, childs.get(groupPosition).get(childPosition).get("child").toString(), Toast.LENGTH_SHORT).show();
				Intent intent = new Intent();
				intent.putExtra("wf" , groups.get(groupPosition).get("group").toString());
				intent.putExtra("user" , childs.get(groupPosition).get(childPosition).get("child").toString());
				ExpandableListViewActivity.this.setResult(RESULT_OK, intent);
				ExpandableListViewActivity.this.finish();
				return false;
			}
			
		});
		ELV.setAdapter(KHA);
		this.setContentView(ELV);
	}
}
 
<activity android:name=".ExpandableListViewActivity" android:theme="@android:style/Theme.Dialog"
			android:screenOrientation="portrait">
			<intent-filter>
				<action android:name="android.intent.action.ELV" />
			</intent-filter>
		</activity>
 
分享到:
评论
1 楼 龙哥IT 2011-10-24  
如果有截图显示就好了

相关推荐

    自定义ExpandableListView结合Sqlite

    在Android开发中,`ExpandableListView`是一种可扩展的列表视图,允许用户折叠和展开子项,这对于显示层次结构的数据非常有用。本教程将深入探讨如何自定义`ExpandableListView`并结合SQLite数据库来实现数据的动态...

    expandablelistview自定义实现单选效果

    在Android开发中,ExpandableListView是一个非常有用的控件,它允许我们展示可折叠的列表,通常用于层次结构的数据展示。本教程将详细讲解如何自定义ExpandableListView,使其一级标题具有类似于RadioButton的单选...

    ExpandableListView实现购物车页面

    在Android应用开发中,"ExpandableListView实现购物车页面"是一个常见的需求,它涉及到用户界面设计、数据管理和交互。ExpandableListView是Android SDK提供的一种可扩展的列表视图,允许用户展示分组数据,每组内...

    ExpandableListView展开折叠动画效果

    在Android开发中,`ExpandableListView`是一种常用的控件,用于展示可以展开和折叠的列表。这个控件允许用户在一级列表项下显示更详细的数据,通常用于构建层级结构清晰的列表,例如菜单、目录或者分类信息。在给定...

    ExpandableListView实现二级列表购物车

    "ExpandableListView实现二级列表购物车" ExpandableListView是Android中的一种视图组件,用于显示二级列表的数据。它可以将数据分组显示,方便用户浏览和操作。下面我们来详细介绍如何使用ExpandableListView实现...

    ExpandableListView 长按事件demo

    在Android开发中,`ExpandableListView`是一种常用的控件,它允许用户展示可折叠的列表,其中每个父项可以展开显示多个子项。这个控件非常适合于需要层次结构数据展示的应用,例如目录树、菜单或者分类信息。在这个...

    ExpandableListView仿QQ列表的实现

    在Android开发中,`ExpandableListView`是一种常用的控件,它可以展示可折叠的子列表,类似于QQ应用中的联系人列表。这个"ExpandableListView仿QQ列表的实现" demo旨在教你如何利用`ExpandableListView`创建类似QQ...

    ExpandableListView 解决子级背景色混乱 和父级展开项唯一效果实现

    在Android开发中,ExpandableListView是一个非常常用的控件,它允许我们展示层次结构的数据,比如一个树状结构。然而,在实际使用过程中,开发者经常会遇到一些问题,如子级条目的背景色混乱以及如何实现父级展开项...

    ExpandableListView的使用实例

    在Android开发中,`ExpandableListView`是一种常用的控件,它允许用户展开和折叠分组,每个分组下可以包含多个子项。这种控件在显示层次结构数据时非常实用,比如目录结构、菜单列表或者分类信息展示。下面将详细...

    android ExpandableListView三级菜单的使用

    在Android开发中,`ExpandableListView`是一种常用的控件,它可以展示可展开和折叠的列表,通常用于构建具有层级结构的数据展示。在这个“android ExpandableListView三级菜单的使用”示例中,我们将深入探讨如何...

    一个ExpandableListView的例子,实现多级菜单分类展示

    在Android开发中,`ExpandableListView`是一种常用的控件,它允许我们展示具有层次结构的数据,比如一个多级菜单分类的场景。在这个例子中,我们将会深入探讨如何利用`ExpandableListView`来创建一个可展开和折叠的...

    自定义ExpandableListView 、Json解析、短信等

    主要四部分内容:自定义ExpandableListView ,Json解析,短信,DatePickerDialog Json解析格式: { "help_count": "16", "date": "2012-06-15", "items": [ { "title":"PP(通讯达人)是什么?", "content":"PP...

    ExpandableListView子item选中颜色发生改变

    在Android开发中,`ExpandableListView`是一种常用的控件,它允许用户展开和折叠分组,每个分组下可以有多个子项。当涉及到用户体验优化时,改变`ExpandableListView`子item选中状态的颜色是一种常见做法,可以提高...

    ExpandableListView实现下拉功能

    在Android开发中,`ExpandableListView`是一种常用的控件,用于展示可以展开和折叠的列表,通常用于构建层级结构的数据展示。在这个特定的实现中,我们关注的是如何去除下拉标志,并实现点击新组时自动关闭其他已...

    自定义带CheckBox的ExpandableListView

    在Android开发中,`ExpandableListView`是一种常用的控件,它允许用户展开和折叠不同的组,每个组下还可以包含多个子项。这个控件在显示层次结构数据时非常有用,例如菜单、设置列表等。而将`CheckBox`与`...

    ExpandableListView,recyclerview的使用

    在Android开发中,`ExpandableListView`、`RecyclerView`以及`ListView`是三种常见的列表控件,用于展示可滚动的数据集合。本篇文章将深入探讨这三个组件的使用方法、特点及它们之间的区别。 首先,`...

    ExpandableListView(实现ListView嵌套ListView的效果)

    在Android开发中,`ExpandableListView`是一种非常实用的控件,它允许开发者创建具有可扩展行的列表,也就是我们常说的嵌套列表。这种控件可以用来展示层次结构的数据,比如目录结构、菜单选项或者复杂的分类信息。...

    Android实现自定义适配器的ExpandableListView示例.rar

    Android实现自定义适配器的ExpandableListView示例,准备一级列表中显示的数据:2个一级列表,分别显示"group1"和"group2",准备第一个一级列表中的二级列表数据:两个二级列表,分别显示"childData1"和"childData2",...

Global site tag (gtag.js) - Google Analytics