2015-04-21 54 views
1

如何获取ExpandableListView中所有选择的项目与乘法选择模式?ExpadableListView获取选定的项目android

adapter = new ExpListAdapter(getActivity(), groups); 
    expandableListView.setAdapter(adapter); 
    adapter.setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE); 
    expandableListView.setGroupIndicator(null); 
    expandableListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() { 

     @Override 
     public boolean onChildClick(ExpandableListView parent, View v, 
            int groupPosition, int childPosition, long id) { 
      adapter.setClicked(groupPosition, childPosition); 
      int index = parent.getFlatListPosition(ExpandableListView.getPackedPositionForChild(groupPosition, childPosition)); 
      parent.setItemChecked(index, true); 
      return true; 
     } 
    }); 

当选择所有项目时,我希望获取它们的ID或值并提交下一个活动的意图。 和转接

public class ExpListAdapter extends BaseExpandableListAdapter { 
////////// 

public void setClicked(int groupPosition, int childPosition) { 
    SparseBooleanArray checkedChildPositionsMultiple = checkedPositions.get(groupPosition); 
    // if in the group there was not any child checked 
    if (checkedChildPositionsMultiple == null) { 
     checkedChildPositionsMultiple = new SparseBooleanArray(); 
     // By default, the status of a child is not checked 
     // So a click will enable it 
     checkedChildPositionsMultiple.put(childPosition, true); 
     checkedPositions.put(groupPosition, checkedChildPositionsMultiple); 
    } else { 
     boolean oldState = checkedChildPositionsMultiple.get(childPosition); 
     checkedChildPositionsMultiple.put(childPosition, !oldState); 
    } 

    notifyDataSetChanged(); 
} 

回答

2

使用下面的代码段跟踪所有检查/选择的项目。您可能需要对此代码进行一些更改,但逻辑保持不变。

if (save_state[position] == true) { 
     viewHolder.check_box.setChecked(true); 
    } else if (save_state[position] == false) { 
     viewHolder.check_box.setChecked(false); 
    } 

    viewHolder.check_box.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      if (save_state[pos] == false) { 
       save_state[pos] = true; 
       selectedItemArray.add(populateList.get(pos)); 
       if (selectedItemArray.size() == populateList.size()) { 
        // all the item are checked/selected no 
       } 
      } else if (save_state[pos] == true) { 
       save_state[pos] = false; 
       selectedItemArray.remove(populateList.get(pos)); 
      } 
     } 
    });