- 浏览: 679856 次
文章分类
最新评论
-
ymm8505:
不错…… 学习了
final -
zht19880706:
楼主,没看懂在 android 代码怎么设置
Android Audio延迟(latency) -
zjc198805:
用popwindow呈现的时候,好像不能会弹,不知道怎么回事, ...
android pinch:双指缩放图片和单指拖拽
expandableListView checkbox
package com.cdma;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.ExpandableListView;
import android.widget.ExpandableListView.OnChildClickListener;
import android.widget.Toast;
public class ExListView extends Activity {
private static final String G_TEXT= "G_TEXT";
//private static final String G_CB= "G_CB";
private static final String C_TITLE = "C_TITLE";
private static final String C_TEXT= "C_TEXT";
private static final String C_CB= "C_CB";
List<Map<String, String>> groupData = new ArrayList<Map<String, String>>();
List<List<Map<String, String>>> childData = new ArrayList<List<Map<String, String>>>();
List<Map<String, Boolean>> groupCheckBox = new ArrayList<Map<String,Boolean>>();
List<List<Map<String, Boolean>>> childCheckBox = new ArrayList<List<Map<String,Boolean>>>();
String CheckedItem="";
ExpandBaseAdapter adapter;
ExpandableListView exList;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//初始化数据Group Text,Child Title Text
for (int i = 0; i < 3; i++) {
Map<String, String> curGroupMap = new HashMap<String, String>();
groupData.add(curGroupMap);
curGroupMap.put(G_TEXT, "Group " + i);
List<Map<String, String>> children = new ArrayList<Map<String, String>>();
for (int j = 0; j < 3; j++) {
Map<String, String> curChildMap = new HashMap<String, String>();
children.add(curChildMap);
curChildMap.put(C_TITLE, "Child " + j);
curChildMap.put(C_TEXT, "Child " + j);
}
childData.add(children);
}
//初始化数据checkBox
for ( int i = 0; i < 5; i++) {
//Map<String, Boolean> curGB = new HashMap<String, Boolean> ();
//groupCheckBox.add(curGB);
//curGB.put(G_CB, false);
List<Map<String, Boolean>> childCB = new ArrayList<Map<String,Boolean>>();
for (int j = 0; j < 5; j++) {
Map<String, Boolean> curCB = new HashMap<String, Boolean>();
childCB.add(curCB);
curCB.put(C_CB, false); //全不选
}
childCheckBox.add(childCB);
}
adapter = new ExpandBaseAdapter(ExListView.this,
groupData, childData, groupCheckBox, childCheckBox);
exList = (ExpandableListView) findViewById(R.id.layoutExListView);
exList.setAdapter(adapter);
// 去掉系统自带的按钮
exList.setGroupIndicator(null);
// 去掉系统自带的分隔线
exList.setDivider(null);
// 展开所有二级列表
int groupCount = adapter.getGroupCount();
for (int i = 0; i < groupCount; i++) {
exList.expandGroup(i);
}
// 监听二级列表
exList.setOnChildClickListener(new OnChildClickListener() {
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
CheckBox checkBox = (CheckBox) v.findViewById(R.id.multiple_checkbox);
checkBox.toggle();
if (childCheckBox.get(groupPosition).get(childPosition).get(C_CB)) {
childCheckBox.get(groupPosition).get(childPosition).put(C_CB, false);
}
else {
childCheckBox.get(groupPosition).get(childPosition).put(C_CB, true);
}
//checkBox.setChecked(childCheckBox.get(groupPosition).get(childPosition).get(C_CB));
CheckedItem = "";
for (int i=0; i < adapter.getGroupCount(); i++) {
for (int j=0; j < adapter.getChildrenCount(i); j++) {
if (childCheckBox.get(i).get(j).get(C_CB)) {
CheckedItem = CheckedItem
+ groupData.get(i).get(G_TEXT) + ":"
+ childData.get(i).get(j).get(C_TITLE)+" ";
}
}
}
Toast.makeText(ExListView.this, CheckedItem, Toast.LENGTH_LONG).show();
/*
Toast.makeText(getBaseContext(),String.valueOf(groupPosition) + ":"+ String.valueOf(childPosition),
Toast.LENGTH_SHORT).show();
*/
return false;
}
});
}
}
/*static class ViewHolder {
TextView cTitle;
TextView cText;
CheckBox checkBox;
}
class ExAdapter extends BaseExpandableListAdapter {
ExListView exlistview;
ViewHolder holder;
public ExAdapter(ExListView elv) {
super();
exlistview = elv;
}
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
View view = convertView;
if (view == null) {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.groupitem, null);
}
TextView title = (TextView) view.findViewById(R.id.content_001);
title.setText(getGroup(groupPosition).toString());
ImageView image=(ImageView) view.findViewById(R.id.groupBox);
if(isExpanded)
image.setBackgroundResource(R.drawable.groupdown);
else image.setBackgroundResource(R.drawable.groupleft);
return view;
}
public long getGroupId(int groupPosition) {
return groupPosition;
}
public Object getGroup(int groupPosition) {
return groupData.get(groupPosition).get(G_TEXT).toString();
}
public int getGroupCount() {
return groupData.size();
}
//**************************************
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
//View view = convertView;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.childitem, null);
holder = new ViewHolder();
holder.cTitle = (TextView) convertView.findViewById(R.id.child_title);
holder.cText = (TextView) convertView.findViewById(R.id.child_text);
holder.checkBox = (CheckBox) convertView.findViewById(R.id.multiple_checkbox);
convertView.setTag(holder);
} else {
holder = (ViewHolder)convertView.getTag();
}
holder.cTitle.setText(childData.get(groupPosition).get(childPosition).get(C_TITLE).toString());
holder.cText.setText(childData.get(groupPosition).get(childPosition).get(C_TEXT).toString());
holder.checkBox.setChecked(childCheckBox.get(groupPosition).get(childPosition).get(C_CB));
return convertView;
}
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
public Object getChild(int groupPosition, int childPosition) {
return childData.get(groupPosition).get(childPosition).get(C_TITLE).toString();
}
public int getChildrenCount(int groupPosition) {
return childData.get(groupPosition).size();
}
//**************************************
public boolean hasStableIds() {
return true;
}
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
}*/
package com.cdma;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;
public class ExpandBaseAdapter extends BaseExpandableListAdapter {
private static final String G_TEXT= "G_TEXT";
//private static final String G_CB= "G_CB";
private static final String C_TITLE = "C_TITLE";
private static final String C_TEXT= "C_TEXT";
private static final String C_CB= "C_CB";
List<Map<String, String>> groupData = new ArrayList<Map<String, String>>();
List<List<Map<String, String>>> childData = new ArrayList<List<Map<String, String>>>();
List<Map<String, Boolean>> groupCheckBox = new ArrayList<Map<String,Boolean>>();
List<List<Map<String, Boolean>>> childCheckBox = new ArrayList<List<Map<String,Boolean>>>();
private Context context;
//ExListView exlistview;
ViewHolder holder;
public ExpandBaseAdapter(Context context,
List<Map<String, String>> groupData, List<List<Map<String, String>>> childData,
List<Map<String, Boolean>> groupCheckBox, List<List<Map<String, Boolean>>> childCheckBox) {
this.groupData = groupData;
this.childData = childData;
this.groupCheckBox = groupCheckBox;
this.childCheckBox = childCheckBox;
this.context = context;
}
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
View view = convertView;
if (view == null) {
LayoutInflater inflater = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.groupitem, null);
}
TextView title = (TextView) view.findViewById(R.id.groupText);
title.setText(getGroup(groupPosition).toString());
ImageView image = (ImageView) view.findViewById(R.id.groupBox);
if (isExpanded)
image.setBackgroundResource(R.drawable.groupdown);
else
image.setBackgroundResource(R.drawable.groupleft);
return view;
}
public long getGroupId(int groupPosition) {
return groupPosition;
}
public Object getGroup(int groupPosition) {
return groupData.get(groupPosition).get(G_TEXT).toString();
}
public int getGroupCount() {
return groupData.size();
}
// **************************************
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
// View view = convertView;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.childitem, null);
holder = new ViewHolder();
holder.cTitle = (TextView) convertView
.findViewById(R.id.child_title);
holder.cText = (TextView) convertView.findViewById(R.id.child_text);
holder.checkBox = (CheckBox) convertView
.findViewById(R.id.multiple_checkbox);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.cTitle.setText(childData.get(groupPosition).get(childPosition)
.get(C_TITLE).toString());
holder.cText.setText(childData.get(groupPosition).get(childPosition)
.get(C_TEXT).toString());
holder.checkBox.setChecked(childCheckBox.get(groupPosition)
.get(childPosition).get(C_CB));
return convertView;
}
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
public Object getChild(int groupPosition, int childPosition) {
return childData.get(groupPosition).get(childPosition).get(C_TITLE)
.toString();
}
public int getChildrenCount(int groupPosition) {
return childData.get(groupPosition).size();
}
// **************************************
public boolean hasStableIds() {
return true;
}
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
static class ViewHolder {
TextView cTitle;
TextView cText;
CheckBox checkBox;
}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!-- android:background="@drawable/default_bg"> -->
<ExpandableListView
android:id="@+id/layoutExListView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentLeft="true"/>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="40dip"
android:layout_gravity="center_horizontal">
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/layout_01">
<ImageView
android:id="@+id/groupImaView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:src="@drawable/group_icon"/>
<RelativeLayout
android:id="@+id/layout_02"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView android:id="@+id/groupText"
android:textSize="26px"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:textColor="#FFFFFF"
android:gravity="center_vertical"
android:paddingLeft="10px"
android:layout_gravity="center_vertical"/>
<ImageView
android:id="@+id/groupBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"/>
</RelativeLayout>
</LinearLayout>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/childlayout"
android:orientation="horizontal">
<RelativeLayout
android:layout_width="fill_parent"
android:id="@+id/relativeLayout1"
android:layout_height="wrap_content">
<ImageView android:id="@+id/childImageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/child_icon"
android:paddingTop="10dip"
android:layout_marginLeft="30dip"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_toRightOf="@id/childImageView">
<TextView
android:id="@+id/child_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:textSize="20dip"
android:layout_gravity="center_vertical"/>
<TextView
android:id="@+id/child_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="15dip"
android:gravity="center_vertical"
android:layout_gravity="center_vertical"/>
</LinearLayout>
<RatingBar
android:id="@+id/ratingbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:numStars="5"
style="?android:attr/ratingBarStyleSmall"
android:gravity="center_vertical"
android:layout_toLeftOf="@+id/multiple_checkbox"/>
<!--这三个很重要
android:focusable="false"
android:focusableInTouchMode="false"
android:clickable="false"
-->
<CheckBox
android:id="@+id/multiple_checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:focusable="false"
android:focusableInTouchMode="false"
android:clickable="false"
android:layout_alignParentRight="true" android:checked="true"/>
</RelativeLayout>
</LinearLayout>
相关推荐
本demo实现功能为:Expandablelistview子项checkBox先获取已选择状态,在次过程中可修改子项选择,最终提交选择子类的项,并打印相关数据
ExpandableListView的group和child里面都含有CheckBox框,二者联动。
修改了checkbox事件处理,多选处理,适用于群发短信,电子邮件
Android中两级都实现带CheckBox的 ExpandableListView,实现两级联动选择
ExpandableListView结合CheckBox实现单选操作
ExpandableListView中group和child都带CheckBox,实现child的全选功能,包含部分选中功能,同时实现类似邮件群发的用户选择功能,选中的用户在EditText中显示,点击后移除.
最近在做关于伸缩列表这块功能,在网上找了许多关于ExpandableListView+CheckBox的例子,不是代码比较臃肿,就是写法混乱,都没什么参考意义,所以动手写了个简洁易懂的Demo.
ExpandableListView中group和child自定义视图带CheckBox,实现child全选、部分选中功能,同时实现类似邮件群发的用户选择功能,选中的用户在EditText中显示,点击后移除. 更新: 1. ExpandableListView勾选后生成的...
ExpandableListView中group和child自定义视图带CheckBox,实现child全选、部分选中功能,同时实现类似邮件群发的用户选择功能,选中的用户在EditText中显示,点击后移除. 更新: 1. ExpandableListView勾选后生成的...
折叠列表ExpandableListView 组合 复选CheckBox 组合单选RadioButton
ExpandableListView的group和child都带CheckBox,并点击group或child时再EditView添加对应Button,child全选时显示group的button,否则显示选中Child的Button
android ExpandableListView的group和child都有checkbox,而且group默认展开,点击后不收起child。
自定义带CheckBox的ExpandableListView的实现,包括CheckBox的控制,以及一个全选与不全选的功能控制。 完整的代码包,可以直接运行看效果。
ExpandAbleListView+checkbox数组方式级联,外层列表可展开收起,内层列表使用checkbox多选框,点击之后可在顶部的gridlayout显示,顶部显示的选中与checkbox选中状态关联,点击顶部选中的item,可取消选中状态,...
ExpandableListView实现购物车页面
下面小编就为大家带来一篇Android 关于ExpandableListView刷新问题的解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
主要介绍了Android listview ExpandableListView实现多选,单选,全选,edittext实现批量输入的实例代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下
带全选CheckBox的基于ExpandableListView的多选Demo源码,我的资料中的另一个是不带全选框的Demo,大家可以相互学习相互交流,免费下载,没设置下载豆
使用TabLayout+Fragment+ViewPager实现仿今日头条tab导航;使用ExpandableListView实现分组功能;使用CheckBox实现选中效果
android listview,ExpandableListView实现单选,多选,全选,edittext实现批量输入.zip