我在我的应用程序中有可扩展的列表视图。我在可扩展列表视图中有两个组,每个组都有选择所有按钮,当我单击选择所有按钮时检查组中的所有子复选框。我可以实现这个?
Group_items.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@color/white"
android:layout_marginTop="5dp"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/filter_item_header"
android:textSize="16sp"
android:text="Header"
android:layout_centerVertical="true"
android:textColor="@color/black"
android:fontFamily="sans-serif-light"
android:layout_marginLeft="5dp"
android:textAllCaps="true"/>
<android.support.v7.widget.AppCompatCheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/filter_select_all"
android:text="Select All"
android:textSize="16sp"
android:fontFamily="sans-serif"
android:layout_alignParentRight="true"
android:textAllCaps="false"
android:layout_marginRight="10dp"
android:visibility="visible"
android:focusable="false"/>
</RelativeLayout>
</LinearLayout>
Child items.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_marginTop="5dp">
<android.support.v7.widget.AppCompatCheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/type_checkbox"
android:text="Type Name"
android:textSize="14sp"
android:fontFamily="sans-serif-light"
android:layout_marginLeft="10dp"
app:buttonTint="#A9A9A9"
/>
<android.support.v7.widget.AppCompatCheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/category_checkbox"
android:text="Category Name"
android:textSize="14sp"
android:fontFamily="sans-serif-light"
android:layout_marginLeft="10dp"
android:visibility="visible"
app:buttonTint="#A9A9A9"
/>
</LinearLayout>
</LinearLayout>
可扩展列表适配器类:
package com.deemsysinc.cyberhealthapp.exercisediary;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.Typeface;
import android.support.v7.widget.AppCompatCheckBox;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.ImageLoader;
import com.deemsysinc.cyberhealthapp.R;
import com.deemsysinc.cyberhealthapp.fooddiary.FoodDiaryChild;
import com.deemsysinc.cyberhealthapp.fooddiary.FoodDiaryGroup;
import com.deemsysinc.cyberhealthapp.utils.AppController;
import java.util.ArrayList;
import java.util.HashMap;
import de.hdodenhof.circleimageview.CircleImageView;
public class FilterListAdapter extends BaseExpandableListAdapter {
private Context context;
private ArrayList<String> titleheader;
private HashMap<String,ArrayList<FilterChild>> stringArrayListHashMap;
ArrayList<Integer> categoryArray;
ArrayList<Integer> typeArray;
ArrayList<String> categoryString;
ArrayList<String> typeStrings;
//-----------------------------------------------------------------------------------------------------//
//-------------------------------------------------ArrayList-------------------------------------------//
private ArrayList<FilterGroup> filterGroups;
//-----------------------------------------------------------------------------------------------------//
//------------------------------------------------Image Loader-----------------------------------------//
ImageLoader imageLoader;
//-----------------------------------------------------------------------------------------------------//
//----------------------------------------------Constructor--------------------------------------------//
public FilterListAdapter(Context context, ArrayList<FilterGroup> filterGroups)
{
this.context=context;
this.filterGroups=filterGroups;
}
public FilterListAdapter(Context context1,ArrayList<String> titleheader,HashMap<String,ArrayList<FilterChild>> stringFilterChildHashMap)
{
this.context=context1;
this.titleheader=titleheader;
this.stringArrayListHashMap=stringFilterChildHashMap;
categoryArray=new ArrayList<Integer>();
typeArray=new ArrayList<Integer>();
categoryString=new ArrayList<String>();
typeStrings=new ArrayList<String>();
}
//------------------------------------------------Ends-------------------------------------------------//
//-----------------------------------------------Base Adapter implementation methods-------------------//
@Override
public int getGroupCount() {
return titleheader.size();
}
@Override
public int getChildrenCount(int groupPosition) {
return this.stringArrayListHashMap.get(this.titleheader.get(groupPosition))
.size();
}
@Override
public Object getGroup(int groupPosition) {
return this.titleheader.get(groupPosition);
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return this.stringArrayListHashMap.get(this.titleheader.get(groupPosition))
.get(childPosition);
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public boolean hasStableIds() {
return true;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
String headerTitle = (String) getGroup(groupPosition);
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this.context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.filtes_item_header, null);
}
TextView lblListHeader = (TextView) convertView
.findViewById(R.id.filter_item_header);
AppCompatCheckBox selectAll=(AppCompatCheckBox) convertView.findViewById(R.id.filter_select_all);
lblListHeader.setText(headerTitle);
return convertView;
}
@Override
public View getChildView(int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
final FilterChild filterChild=(FilterChild) getChild(groupPosition, childPosition);
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this.context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.exercise_filter_list_item, null);
}
AppCompatCheckBox txtListChild = (AppCompatCheckBox) convertView
.findViewById(R.id.type_checkbox);
AppCompatCheckBox txtListChild1 = (AppCompatCheckBox) convertView
.findViewById(R.id.category_checkbox);
Log.d("GropPosition",""+groupPosition);
if(groupPosition==0)
{
txtListChild1.setVisibility(View.VISIBLE);
txtListChild.setVisibility(View.GONE);
txtListChild1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked==true) {
Log.d("CategorTheId", filterChild.getCategoryid());
categoryArray.add(Integer.parseInt(filterChild.getCategoryid()));
String category=filterChild.getCategoryname().substring(0,Math.min(5,filterChild.getCategoryname().length()));
Log.d("SubsCateg",category);
categoryString.add(category);
}
else
{
if(categoryArray.size()>0) {
categoryArray.remove(childPosition);
notifyDataSetChanged();
}
if(categoryString.size()>0)
{
categoryString.remove(childPosition);
notifyDataSetChanged();
}
}
}
});
}
if(groupPosition==1)
{
txtListChild.setVisibility(View.VISIBLE);
txtListChild1.setVisibility(View.GONE);
txtListChild.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked==true)
{
Log.d("TheTypeid",filterChild.getTypeid());
typeArray.add(Integer.parseInt(filterChild.getTypeid()));
String type=filterChild.getTypename().substring(0,Math.min(5,filterChild.getTypename().length()));
typeStrings.add(type);
}
else
{
if(typeArray.size()>0)
{
typeArray.remove(childPosition);
notifyDataSetChanged();
}
if(typeStrings.size()>0)
{
typeStrings.remove(childPosition);
notifyDataSetChanged();
}
}
}
});
}
txtListChild.setText(filterChild.getTypename());
txtListChild1.setText(filterChild.getCategoryname());
return convertView;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
public ArrayList<Integer> getCategoryArray()
{
return categoryArray;
}
public ArrayList<Integer> getTypeArray()
{
return typeArray;
}
public ArrayList<String> getCategoryString()
{
return categoryString;
}
public ArrayList<String> getTypeStrings()
{
return typeStrings;
}
/**private CompoundButton.OnCheckedChangeListener groupchecklistener = new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
int index = (Integer) buttonView.getTag();
for(int i = 0;i<filterGroups.get(index).getFilterChildCategories().size();i++){
filterGroups.get(index).getContacts().get(i).setCheck(isChecked);
}
filterGroups.get(index).setCheck(isChecked);
notifyDataSetChanged();
}
};*/
}