我有一个可扩展的列表视图,其中每个项目(组)有多个子项,每个子项都有一个单选按钮。在每个组中,只能选择一个单选按钮。
在我的尝试中,我只能激活一个单选按钮,但不是在每个组中,而是在整个列表中。同样,当一个组展开时,所选单选按钮的位置也会改变。
这是我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;模式只在同一组的孩子之间?
感谢您的帮助!