ExpadableListView获取选定的项目android

时间:2015-04-21 09:59:42

标签: android expandablelistview

如何使用乘法选择模式在ExpandableListView中获取所有选定项目?

 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();
} 

1 个答案:

答案 0 :(得分: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));
            }
        }
    });