`

ExpandableListAdapter 用法

 
阅读更多
package com.quding.listview;

import android.app.Activity;
import android.database.DataSetObserver;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;

/**
 * 数据:一维或二维数组 == 定义adapter == 为listview添加adapter
 */

public class ListViewActivity extends Activity {
	private String[][] child = {
			{ "11111", "22222", "33333", "44444", "55555" },
			{ "11111", "22222", "33333", "44444", "55555" },
			{ "11111", "22222", "33333", "44444", "55555" },
			{ "11111", "22222", "33333", "44444", "55555" } };
	private String group[] = { "group1", "group2", "group3", "group4", };

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		ExpandableListView mExpandableListView = (ExpandableListView) findViewById(R.id.eapandable_listview);
		mExpandableListView.setBackgroundColor(Color.LTGRAY);

//		// 头和尾
//		TextView text1 = new TextView(getApplicationContext());
//		text1.setText("first1");
//		mListView.addHeaderView(text1);
//		TextView text3 = new TextView(getApplicationContext());
//		text3.setText("first2");
//		mListView.addHeaderView(text3);
//
//		TextView text2 = new TextView(getApplicationContext());
//		text2.setText("end");
//		mListView.addFooterView(text2);

		mExpandableListView.setAdapter(new ExpandableListAdapter() {
			@Override
			public void unregisterDataSetObserver(DataSetObserver observer) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void registerDataSetObserver(DataSetObserver observer) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void onGroupExpanded(int groupPosition) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void onGroupCollapsed(int groupPosition) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public boolean isEmpty() {
				return false;
			}
			
			@Override
			public boolean isChildSelectable(int groupPosition, int childPosition) {
				return true;
			}
			
			@Override
			public boolean hasStableIds() {
				return true;
			}
			
			@Override
			public View getGroupView(int groupPosition, boolean isExpanded,
					View convertView, ViewGroup parent) {
				TextView mTextView = new TextView(getApplicationContext());
				mTextView.setText(group[groupPosition]);
				mTextView.setTextColor(Color.RED);
				mTextView.setPadding(40, 0, 0, 0);
				mTextView.setTextSize(20);
				
				return mTextView;
			}
			
			@Override
			public long getGroupId(int groupPosition) {
				return groupPosition;
			}
			
			@Override
			public int getGroupCount() {
				return group.length;
			}
			
			@Override
			public Object getGroup(int groupPosition) {
				return group[groupPosition];
			}
			
			@Override
			public long getCombinedGroupId(long groupId) {
				return 0;
			}
			
			@Override
			public long getCombinedChildId(long groupId, long childId) {
				return 0;
			}
			
			@Override
			public int getChildrenCount(int groupPosition) {
				return child[0].length;
			}
			
			@Override
			public View getChildView(int groupPosition, int childPosition,
					boolean isLastChild, View convertView, ViewGroup parent) {
				TextView mTextView = new TextView(getApplicationContext());
				mTextView.setText(child[groupPosition][childPosition]);
				mTextView.setTextColor(Color.BLUE);
				mTextView.setGravity(Gravity.CENTER);
				mTextView.setTextSize(15);
				
				return mTextView;
			}
			
			@Override
			public long getChildId(int groupPosition, int childPosition) {
				return childPosition;
			}
			
			@Override
			public Object getChild(int groupPosition, int childPosition) {
				return child[groupPosition][childPosition];
			}
			
			@Override
			public boolean areAllItemsEnabled() {
				return true;
			}
		});
	}
}

 

分享到:
评论

相关推荐

    ExpandableListAdapter+CheckBox实现购物车

    `ExpandableListAdapter`需要重写一些关键方法,如`getGroupCount()`、`getChildrenCount(int groupPosition)`、`getGroup(int groupPosition)`和`getChild(int groupPosition, int childPosition)`,来定义组和子项...

    二级组合菜单:ExpandableListAdapter+Spinner+CheckBox

    本教程将详细讲解如何使用`ExpandableListAdapter`、`Spinner`和`CheckBox`来实现这样一个功能丰富的交互式菜单。 `ExpandableListAdapter`是Android提供的一个适配器,专门用于处理可展开/折叠的列表视图,即...

    ExpandableListView实时更新UI数据

    通过`setGroupIndicator`方法可以自定义展开和折叠的图标,同时,可以使用`smoothScrollToPosition`方法平滑滚动到特定位置。 7. **性能优化**:对于大量数据,使用`ViewHolder`模式可以显著提高滚动性能。`...

    ExpandableListView用法

    下面我们将深入探讨`ExpandableListView`的使用方法及其相关知识点。 首先,我们要理解`ExpandableListView`的基本结构。它由两部分组成:分组(Group)和子项(Child)。分组是可以展开和折叠的条目,而子项是属于...

    ExpandableListView二级列表

    本教程将深入探讨`ExpandableListView`的使用方法,包括如何创建、填充数据,以及实现交互功能。 首先,`ExpandableListView`是一个可扩展的列表视图,它可以显示一组可展开或折叠的子列表。每个父项(Group)可以...

    ExpandableListview 的动态树形数据的生成

    适配器需要根据City和InnerCity的结构进行定制,实现`ExpandableListAdapter`的接口方法,如`getGroupCount`,`getChildCount`,`getGroupView`和`getChildView`等。 最后,别忘了在Activity或Fragment中启动异步...

    ExpandableListDemo

    使用`ExpandableListView`的`setAdapter()`方法,传入自定义的`ExpandableListAdapter`实例,完成数据与视图的绑定。 7. **设置默认状态**: 可以通过`expandGroup()`和`collapseGroup()`方法来控制列表的默认...

    【Android】树形菜单、扩展下拉菜单android.widget.ExpandableListView

    在本篇文章中,我们将深入探讨`ExpandableListView`的使用方法,以及如何通过源码理解和定制它。 首先,`ExpandableListView`是基于`ListView`进行扩展的,继承了`AdapterView`类。它需要一个`...

    ExpandableListView初步学习

    通常,我们可以使用自定义的类来存储这些数据,然后将它们转换为`ExpandableListAdapter`能理解的数据格式。`ExpandableListAdapter`是`ExpandableListView`的适配器,它负责将数据绑定到视图上。 ### 三、适配器`...

    ListViewDemo.rar

    `ExpandableListAdapter`继承自`BaseExpandableListAdapter`,需要重写其若干方法,如`getGroupCount()`、`getChildrenCount()`、`getGroupView()`和`getChildView()`等,以提供必要的视图和数据。 `getGroupCount...

    android中ExpandableListView嵌套GridView的使用

    在`Activity`的`onCreate()`方法中,实例化`ExpandableListView`和`ExpandableListAdapter`,并将其绑定。 ```java public class MainActivity extends AppCompatActivity { ExpandableListView ...

    ExpandablelistviewTest

    在Android开发中,`ExpandableListView`是一种常用的控件,它允许我们展示具有层次结构的数据,...通过分析这个项目的源代码,我们可以深入理解`ExpandableListView`的工作原理和使用方法,进一步提升Android开发能力。

    2级菜单Expandlistview

    在Android开发中,ExpandableListView是一种非常常用的控件,它允许我们展示具有层次...理解和掌握其使用方法对于提升应用程序的用户体验至关重要。通过实践和不断探索,开发者可以创建出更加复杂和动态的菜单系统。

    安卓Android源码——ExpandableListDemo.rar

    在ExpandableListDemo中,我们可以看到如何实现自定义的ExpandableListAdapter,这通常包括两个关键方法:`getGroupCount()` 和 `getChildrenCount()`,分别返回父组的数量和每个父组的子项数量。 接着,源码中的`...

    Android应用源码之expandableList1.zip

    在本文中,我们将详细探讨ExpandableListView的工作原理、使用方法以及源码解析。 首先,ExpandableListView是ListView的一个扩展,它增加了层次结构。每个条目(group)可以展开或折叠,显示隐藏在其下的子条目...

    安卓ExpandableListView嵌套Gridview嵌套用法,与多点触控图片缩放

    在Android中,你需要创建一个ExpandableListAdapter来填充数据,并重写其相关的方法,如getGroupCount(), getChildrenCount(), getGroupView(), getChildView()等,以便自定义显示样式。 接着,GridView则是一个...

    二级菜单使用

    在Android中,我们可以使用Adapter来绑定数据到ExpandableListView,这个Adapter是ExpandableListAdapter,它比普通的ListAdapter增加了处理父条目和子条目的逻辑。 1. **创建数据模型**: - 定义一个父类数据模型...

    android expendablelistview 例子

    ExpendableListView是Android平台上的一个...通过学习和分析这些代码,开发者可以更好地理解和掌握ExpendableListView的使用方法。记得在实际项目中,根据需求对示例进行适当的修改和优化,以满足具体的需求和设计。

    ExpandableListView

    在本文中,我们将深入探讨`ExpandableListView`的使用方法,包括如何设置二级列表的展示、自定义样式以及相关的编程技巧。 1. **基本使用** 在Android项目中使用`ExpandableListView`,首先需要在布局XML文件中...

    ExpandableListView的用法

    使用`ExpandableListAdapter`作为适配器,需要实现`BaseExpandableListAdapter`接口。以下是一个简单的例子: ```java public class MyExpandableListAdapter extends BaseExpandableListAdapter { private ...

Global site tag (gtag.js) - Google Analytics