CheckBox ExpandableListView

来源:互联网 发布:h5小游戏源码免费下载 编辑:程序博客网 时间:2024/05/17 02:15
package com.llkj.td.adapter;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.content.Context;import android.graphics.drawable.Drawable;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseExpandableListAdapter;import android.widget.CheckBox;import android.widget.SimpleExpandableListAdapter;import android.widget.TextView;import com.example.xinlanslidenmenu.R;public class Select_Addressee_Adapter extends BaseExpandableListAdapter {private Context context;private ArrayList<String> groupList;private ArrayList<ArrayList<String>> childList;private int selectedGroupPosition = -1;private int selectedChildPosition = -1;private List<HashMap<Integer, Boolean>> isSelected;public Select_Addressee_Adapter(Context context,ArrayList<String> groupList, ArrayList<ArrayList<String>> childList) {isSelected = new ArrayList<HashMap<Integer, Boolean>>();this.groupList = groupList;this.childList = childList;this.context = context;initSelectedMap();}public void initSelectedMap() {// 默认全部未勾选状态。for (int groupId = 0; groupId < groupList.size(); ++groupId) {HashMap<Integer, Boolean> mChildCheck = new HashMap<Integer, Boolean>();for (int childId = 0; childId < childList.get(groupId).size(); ++childId) {mChildCheck.put(childId, false);}isSelected.add(mChildCheck);}}public void setItemCheckBoxStatus(View mView, int groupPosition,int childPostion) {ViewChildrenHolder holder = (ViewChildrenHolder) mView.getTag();// 改变CheckBox的状态holder.cb_select_addressee_select.toggle();// 将CheckBox的选中状况记录下来isSelected.get(groupPosition).put(childPostion,holder.cb_select_addressee_select.isChecked());}public void setAllCheckBoxStatus(Boolean mFlag) {for (int groupId = 0; groupId < groupList.size(); ++groupId) {for (int childId = 0; childId < childList.get(groupId).size(); ++childId) {isSelected.get(groupId).put(childId, mFlag);}}}public void setSelectedPosition(int selectedGroupPosition,int selectedChildPosition) {this.selectedGroupPosition = selectedGroupPosition;this.selectedChildPosition = selectedChildPosition;}class ViewHolder {TextView tv_select_addressee_content;CheckBox cb_select_addressee_select;}class ViewChildrenHolder {TextView tv_select_addressee_content;CheckBox cb_select_addressee_select;}@Overridepublic int getGroupCount() {// TODO Auto-generated method stubreturn this.groupList.size();}@Overridepublic int getChildrenCount(int groupPosition) {// TODO Auto-generated method stubreturn this.childList.get(groupPosition).size();}@Overridepublic Object getGroup(int groupPosition) {// TODO Auto-generated method stubreturn this.groupList.get(groupPosition);}@Overridepublic Object getChild(int groupPosition, int childPosition) {// TODO Auto-generated method stubreturn childList.get(groupPosition).get(childPosition);}@Overridepublic long getGroupId(int groupPosition) {// TODO Auto-generated method stubreturn groupPosition;}@Overridepublic long getChildId(int groupPosition, int childPosition) {// TODO Auto-generated method stubreturn childPosition;}@Overridepublic boolean hasStableIds() {// TODO Auto-generated method stubreturn true;}@Overridepublic boolean isChildSelectable(int groupPosition, int childPosition) {// TODO Auto-generated method stubreturn true;}@Overridepublic View getChildView(final int groupPosition, final int childPosition,boolean isLastChild, View convertView, ViewGroup parent) {// TODO Auto-generated method stubViewChildrenHolder holder = null;if (convertView == null) {convertView = LayoutInflater.from(context).inflate(R.layout.select_addressee_group, null);holder = new ViewChildrenHolder();holder.tv_select_addressee_content = (TextView) convertView.findViewById(R.id.tv_select_addressee_content);holder.cb_select_addressee_select = (CheckBox) convertView.findViewById(R.id.cb_select_addressee_select);convertView.setTag(holder);} else {holder = (ViewChildrenHolder) convertView.getTag();}holder.tv_select_addressee_content.setText(getChild(groupPosition,childPosition) + "children");holder.cb_select_addressee_select.setChecked(isSelected.get(groupPosition).get(childPosition));holder.cb_select_addressee_select.setOnClickListener(new CheckBox.OnClickListener() {@Overridepublic void onClick(View v) {CheckBox cb = (CheckBox) v;if (isSelected.get(groupPosition).containsKey(childPosition)) {// Log.w(TAG,"****onItemClick***NEED REMOVE***");isSelected.get(groupPosition).remove(childPosition);} isSelected.get(groupPosition).put(childPosition,cb.isChecked());}});return convertView;}@Overridepublic View getGroupView(int groupPosition, boolean isExpanded,View convertView, ViewGroup parent) {ViewHolder holder = null;if (convertView == null) {convertView = LayoutInflater.from(context).inflate(R.layout.select_addressee_group, null);holder = new ViewHolder();holder.tv_select_addressee_content = (TextView) convertView.findViewById(R.id.tv_select_addressee_content);holder.cb_select_addressee_select = (CheckBox) convertView.findViewById(R.id.cb_select_addressee_select);convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}Drawable btn_browser = context.getResources().getDrawable(R.drawable.btn_browser);Drawable btn_browser2 = context.getResources().getDrawable(R.drawable.btn_browser2);btn_browser.setBounds(0, 0, btn_browser.getMinimumWidth(),btn_browser.getMinimumHeight());btn_browser2.setBounds(0, 0, btn_browser2.getMinimumWidth(),btn_browser2.getMinimumHeight());if (isExpanded) {// iv.setImageResource(R.drawable.btn_browser2);holder.tv_select_addressee_content.setCompoundDrawables(btn_browser2, null, null, null);} else {// iv.setImageResource(R.drawable.btn_browser);holder.tv_select_addressee_content.setCompoundDrawables(btn_browser, null, null, null);}holder.cb_select_addressee_select.setFocusable(false);holder.cb_select_addressee_select.setClickable(true);holder.tv_select_addressee_content.setText(getGroup(groupPosition)+ "group");return convertView;}}
package com.llkj.td.view.friend;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.view.Window;import android.widget.Button;import android.widget.ExpandableListView;import android.widget.ExpandableListView.OnChildClickListener;import com.example.xinlanslidenmenu.R;import com.im.chat.common.bean.User;import com.llkj.dt.view.chat.GroupSendActivity;import com.llkj.td.adapter.MyExpandableListAdapter;import com.llkj.td.adapter.MyGroupAdapter;import com.llkj.td.adapter.Select_Addressee_Adapter;import com.llkj.td.util.MyApplication;public class Select_Addressee_Activity extends Activity implements OnClickListener{private ExpandableListView el_select_contact_content;private Button btn_back,bt_select_addressess_allselect; private Boolean mAllSelected = false;   private ArrayList<String> groupList; private    ArrayList<ArrayList<String>> childList; private   Select_Addressee_Adapter  adapter;  private List<HashMap<Integer,Boolean>>  mCheckedObj = new ArrayList<HashMap<Integer,Boolean>>();   private int mAllSelectedSize = 0;  @Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);MyApplication.getInstance().addActivity(this);setContentView(R.layout.select_addressee);initView();addListener();}private void initView() {// TODO Auto-generated method stubel_select_contact_content = (ExpandableListView) findViewById(R.id.el_select_contact_content);btn_back = (Button) findViewById(R.id.btn_back);bt_select_addressess_allselect = (Button) findViewById(R.id.bt_select_addressess_allselect);bt_select_addressess_allselect.setOnClickListener(this); groupList = new ArrayList<String>();        for (int i = 0; i < 3; i++) {            groupList.add("title"+i);        }                ArrayList<String> itemList1 = new ArrayList<String>();        itemList1.add("Item1");        itemList1.add("Item2");        ArrayList<String> itemList2 = new ArrayList<String>();        itemList2.add("Item1");        itemList2.add("Item21");        itemList2.add("Item3");        ArrayList<String> itemList3 = new ArrayList<String>();        itemList3.add("Item1");        itemList3.add("Item2");        itemList3.add("Item3");        itemList3.add("Item4");        childList = new ArrayList<ArrayList<String>>();        childList.add(itemList1);        childList.add(itemList2);        childList.add(itemList3);                        for(int groupId = 0; groupId < groupList.size();++groupId){              HashMap<Integer,Boolean> temp = new HashMap<Integer,Boolean>();              for(int childId = 0; childId < childList.get(groupId).size();++childId){                  mAllSelectedSize++;              }              mCheckedObj.add(temp);          }          adapter = new Select_Addressee_Adapter(this,groupList, childList);el_select_contact_content.setAdapter(adapter);el_select_contact_content.setOnChildClickListener(new OnChildClickListener() {@Overridepublic boolean onChildClick(ExpandableListView parent, View v,int groupPosition, int childPosition, long id) {adapter.setItemCheckBoxStatus(v, groupPosition, childPosition); if(mCheckedObj.get(groupPosition).containsKey(childPosition)){                  //  Log.w(TAG,"****onItemClick***NEED REMOVE***");                      mCheckedObj.get(groupPosition).remove(childPosition);                  }                  else{                  //  Log.w(TAG,"****onItemClick***NEED put***");                      mCheckedObj.get(groupPosition).put(childPosition, true);                          }                                    if(getCheckedObjSize() == 0){                  //  Log.w(TAG,"****onItemClick**NO CHECKED***");                      mAllSelected = false;  //                    mBtn.setText("SelectAll");                  }                  else if(getCheckedObjSize() == mAllSelectedSize){                      mAllSelected = true;  //                    mBtn.setText("UnselectAll");                          }  // TODO Auto-generated method stubIntent intent = new Intent(Select_Addressee_Activity.this,GroupSendActivity.class);User user = new User();user.setId("1000063");user.setEmail("");user.setGroup(1);user.setImg(R.drawable.ic_launcher);user.setName("李四");user.setTime("9:00");intent.putExtra("user", user);startActivity(intent);return true;}});} private int getCheckedObjSize(){          int size =0;          for(int groupId = 0; groupId < groupList.size();++groupId){              size += mCheckedObj.get(groupId).size();          }          return size;      }  private void addListener() {// TODO Auto-generated method stubbtn_back.setOnClickListener(this);}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch (v.getId()) {case R.id.btn_back:this.finish();break;case R.id.bt_select_addressess_allselect:if(mAllSelected){                                     mAllSelected = false;                  bt_select_addressess_allselect.setText("全选");                  adapter.setAllCheckBoxStatus(false);                  for(int groupId = 0; groupId < groupList.size();++groupId){                      mCheckedObj.get(groupId).clear();                  }              }              else{                  mAllSelected = true;                  bt_select_addressess_allselect.setText("UnselectAll");                  adapter.setAllCheckBoxStatus(true);                  for(int groupId = 0; groupId < groupList.size();++groupId){                      for(int childId = 0; childId < childList.get(groupId).size();++childId){                          mCheckedObj.get(groupId).put(childId, true);                      }                  }              }              //Refresh data              adapter.notifyDataSetChanged();  break;default:break;}}}


0 0
原创粉丝点击