从可扩展视图中获取复选框值

Get checkbox value from expandableview

我知道之前问过类似的问题,但他们没有解决我的问题。

我正在创建一个复选框可扩展视图,其数据来自某些 Api。现在我想要 activity.

中所有选中的复选框值

我得到了所有值(我提到了另一个问题 Expandable check box),我得到的这个值是 return([Pair{4 4}, Pair{3 3}, Pair{0 0}, Pair{3 6}, Pair{1 5}, Pair{3 7}, Pair{4 3}, Pair{3 4}, Pair{1 6}, Pair{4 2}, Pair{3 5}])。现在我怎样才能从这个值中获得价值?

  private final Set<Pair<Long, Long>> mCheckedItems = new HashSet<Pair<Long, Long>>();

 public View getChildView(final int groupPosition, final int childPosition,
                         boolean isLastChild, View convertView, ViewGroup parent) {

    final String childText = (String) getChild(groupPosition, childPosition);

    if (convertView == null) {
        LayoutInflater infalInflater = (LayoutInflater) this.context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = infalInflater.inflate(R.layout.expandable_group_child, null);
    }

    TextView txtListChild = (TextView) convertView
            .findViewById(R.id.expandableChild);

    final CheckBox cb = (CheckBox) convertView.findViewById(R.id.childCkBox);
    // add tag to remember groupId/childId
    final Pair<Long, Long> tag = new Pair<Long, Long>(
            getGroupId(groupPosition),
            getChildId(groupPosition, childPosition));

    cb.setTag(tag);
    // set checked if groupId/childId in checked items
    cb.setChecked(mCheckedItems.contains(tag));
    // set OnClickListener to handle checked switches
    cb.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            final CheckBox cb = (CheckBox) v;
            final Pair<Long, Long> tag = (Pair<Long, Long>) v.getTag();
            if (cb.isChecked()) {
                mCheckedItems.add(tag);
                //mCheckBoxData.put(getGroupId(groupPosition),
                        getChildId(groupPosition, childPosition));
            } else {
                mCheckedItems.remove(tag);
                //mCheckBoxData.remove(getGroupId(groupPosition),getChildId(groupPosition, childPosition));
            }
        }
    });

    txtListChild.setText(childText);
    return convertView;
}

在Activity中:

  private Set<Pair<Long, Long>> mCheckedItems = new HashSet<Pair<Long, Long>>();
  mCheckedItems = listAdapter.getCheckedItems();
  System.out.println(mCheckedItems);

我现在知道如何从这种类型中检索数据了。

编辑

我有多个组,所有数据都来自 Api。

试试这个

创建界面AdapterCallback.java

interface AdapterCallback {
    void onMethodCallback(int pos, String name);
}

在您的适配器中

    private AdapterCallback mAdapterCallback;
//constructor
 public Adapter(Context context, ArrayList<DataClass> arrayList, AdapterCallback callback) {
        this.context = context;
        this.arrayList = arrayList;
        this.mAdapterCallback = callback;
    }

在您选中/取消选中复选框的获取视图方法调用中

mAdapterCallback.onMethodCallback(rowItem.getPos(), rowItem.getName());

在您的 activity 中实现这样的界面

public class MainActivity extends AppCompatActivity implements AdapterCallback 

并像这样 activity 覆盖你的接口方法

@Override
    public void onMethodCallback(int pos, String name) {
        Log.d("interface", "calling");
        Log.d("pos", ""+pos);
        Log.d("name", name);

    }