ExpadableListView 获取选中的项目 android

ExpadableListView get selected items android

如何使用乘 select 模式在 ExpandableListView 中获取所有 selected 项目?

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

当所有项目都被 select 编辑后,我想获取它们的 ID 或值并提交下一个 activity 的意图。 和适配器

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

使用以下代码片段跟踪所有 checked/selected 项。您可能需要对此代码进行少量更改,但逻辑保持不变。

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