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>
分享到:
相关推荐
在Android开发中,`ExpandableListView`是一种可扩展的列表视图,允许用户折叠和展开子项,这对于显示层次结构的数据非常有用。本教程将深入探讨如何自定义`ExpandableListView`并结合SQLite数据库来实现数据的动态...
在Android开发中,ExpandableListView是一个非常有用的控件,它允许我们展示可折叠的列表,通常用于层次结构的数据展示。本教程将详细讲解如何自定义ExpandableListView,使其一级标题具有类似于RadioButton的单选...
在Android应用开发中,"ExpandableListView实现购物车页面"是一个常见的需求,它涉及到用户界面设计、数据管理和交互。ExpandableListView是Android SDK提供的一种可扩展的列表视图,允许用户展示分组数据,每组内...
在Android开发中,`ExpandableListView`是一种常用的控件,用于展示可以展开和折叠的列表。这个控件允许用户在一级列表项下显示更详细的数据,通常用于构建层级结构清晰的列表,例如菜单、目录或者分类信息。在给定...
"ExpandableListView实现二级列表购物车" ExpandableListView是Android中的一种视图组件,用于显示二级列表的数据。它可以将数据分组显示,方便用户浏览和操作。下面我们来详细介绍如何使用ExpandableListView实现...
在Android开发中,`ExpandableListView`是一种常用的控件,它允许用户展示可折叠的列表,其中每个父项可以展开显示多个子项。这个控件非常适合于需要层次结构数据展示的应用,例如目录树、菜单或者分类信息。在这个...
在Android开发中,`ExpandableListView`是一种常用的控件,它可以展示可折叠的子列表,类似于QQ应用中的联系人列表。这个"ExpandableListView仿QQ列表的实现" demo旨在教你如何利用`ExpandableListView`创建类似QQ...
在Android开发中,ExpandableListView是一个非常常用的控件,它允许我们展示层次结构的数据,比如一个树状结构。然而,在实际使用过程中,开发者经常会遇到一些问题,如子级条目的背景色混乱以及如何实现父级展开项...
在Android开发中,`ExpandableListView`是一种常用的控件,它允许用户展开和折叠分组,每个分组下可以包含多个子项。这种控件在显示层次结构数据时非常实用,比如目录结构、菜单列表或者分类信息展示。下面将详细...
在Android开发中,`ExpandableListView`是一种常用的控件,它可以展示可展开和折叠的列表,通常用于构建具有层级结构的数据展示。在这个“android ExpandableListView三级菜单的使用”示例中,我们将深入探讨如何...
在Android开发中,`ExpandableListView`是一种常用的控件,它允许我们展示具有层次结构的数据,比如一个多级菜单分类的场景。在这个例子中,我们将会深入探讨如何利用`ExpandableListView`来创建一个可展开和折叠的...
主要四部分内容:自定义ExpandableListView ,Json解析,短信,DatePickerDialog Json解析格式: { "help_count": "16", "date": "2012-06-15", "items": [ { "title":"PP(通讯达人)是什么?", "content":"PP...
在Android开发中,`ExpandableListView`是一种常用的控件,它允许用户展开和折叠分组,每个分组下可以有多个子项。当涉及到用户体验优化时,改变`ExpandableListView`子item选中状态的颜色是一种常见做法,可以提高...
在Android开发中,`ExpandableListView`是一种常用的控件,用于展示可以展开和折叠的列表,通常用于构建层级结构的数据展示。在这个特定的实现中,我们关注的是如何去除下拉标志,并实现点击新组时自动关闭其他已...
在Android开发中,`ExpandableListView`是一种常用的控件,它允许用户展开和折叠不同的组,每个组下还可以包含多个子项。这个控件在显示层次结构数据时非常有用,例如菜单、设置列表等。而将`CheckBox`与`...
在Android开发中,`ExpandableListView`、`RecyclerView`以及`ListView`是三种常见的列表控件,用于展示可滚动的数据集合。本篇文章将深入探讨这三个组件的使用方法、特点及它们之间的区别。 首先,`...
在Android开发中,`ExpandableListView`是一种非常实用的控件,它允许开发者创建具有可扩展行的列表,也就是我们常说的嵌套列表。这种控件可以用来展示层次结构的数据,比如目录结构、菜单选项或者复杂的分类信息。...
Android实现自定义适配器的ExpandableListView示例,准备一级列表中显示的数据:2个一级列表,分别显示"group1"和"group2",准备第一个一级列表中的二级列表数据:两个二级列表,分别显示"childData1"和"childData2",...