ExpandableListView子单选按钮

时间:2014-03-18 16:57:16

标签: android expandablelistview android-ui expandablelistadapter

我有一个可扩展的列表视图,其中每个项目(组)有多个子项,每个子项都有一个单选按钮。在每个组中,只能选择一个单选按钮。

在我的尝试中,我只能激活一个单选按钮,但不是在每个组中,而是在整个列表中。同样,当一个组展开时,所选单选按钮的位置也会改变。

这是我setOnChildClickListener

的代码
ExpListView.setOnChildClickListener(new OnChildClickListener() {

    public boolean onChildClick(ExpandableListView expandableListView, View view, int groupPosition, int childPosition, long id) {

        Log.v("TESTING","On Child Click");
        if (groupPosition == 0) {
            Log.v("TESTING","OnChildClick - groupPosition = 0");
            RadioButton last = checkedRadio1;
            RadioButton r = (RadioButton) view.findViewById(R.id.radio_button);

            if (last != null)
                last.setChecked(false);
            r.setChecked(true);
            checkedRadio1 = r;

            return true;
        }
        else if (groupPosition == 1) {
            RadioButton last = checkedRadio2;
            RadioButton r = (RadioButton) view.findViewById(R.id.radio_button);

            if (last != null)
                last.setChecked(false);
            r.setChecked(true);
            checkedRadio2 = r;

            return true;
        }
        else if(groupPosition == 2) {
            RadioButton last = checkedRadio3;
            RadioButton r = (RadioButton) view.findViewById(R.id.radio_button);

            if (last != null)
                last.setChecked(false);
            r.setChecked(true);
            checkedRadio3 = r;

            return true;
        }

        else return false;
    }
});

这里是setOnItemLongClickListener的代码(我希望长按一下)

ExpListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {

    public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
       if (ExpandableListView.getPackedPositionType(l) == ExpandableListView.PACKED_POSITION_TYPE_GROUP) {
          int groupPosition = ExpandableListView.getPackedPositionGroup(l);

            if (lastExpandedPosition != -1
                    && groupPosition != lastExpandedPosition) {
                ExpListView.collapseGroup(lastExpandedPosition);
            }
            ExpListView.expandGroup(groupPosition);
            lastExpandedPosition = groupPosition;

            return true;
        }

        else return false;
    }
});

如何确保孩子的位置是正确的?例如,如果我检查第一组中的第二个孩子,然后展开第二个组(第一个组自动折叠)我检查了第二个组中的第一个孩子。我怎么解决这个问题?我怎样才能做出单一选择&#39;模式只在同一组的孩子之间?

感谢您的帮助!

0 个答案:

没有答案