您有可扩展列表视图的活动。在那里我必须从每个组中选择单个孩子。所以我用single_selection list_item.xml文件创建了一个子文件,在运行时我将single selection属性设置为true。
这是我的输出。
第一项的选择正常,直到我选择第二项。当我从第2组中选择一个项目时,第1组中的所选项目将被取消选中。给我任何想法。
单选
xp_list.setChoiceMode(AbsListView.CHOICE_MODE_SINGLE);
适配器类 public class DegreeAdapter扩展了BaseExpandableListAdapter {
private List<String> group;
private Map<String, List<String>> array = new HashMap<>();
DegreeAdapter(List<String> group, Map<String, List<String>> array) {
this.group = group;
this.array = array;
//Logger.Log(TAG, "CONS===>" + array.toString());
}
@Override
public int getGroupCount() {
//Logger.Log(TAG, "CONS===>" + array);
return group.size();
}
@Override
public int getChildrenCount(int groupPosition) {
return array.get(getGroup(groupPosition)).size();
}
@Override
public String getGroup(int groupPosition) {
return group.get(groupPosition);
}
@Override
public String getChild(int groupPosition, int childPosition) {
return array.get(getGroup(groupPosition)).get(childPosition);
}
@Override
public long getGroupId(int groupPosition) {
return 0;
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return 0;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.preference_header, parent, false);
}
String title = getGroup(groupPosition);
((TextView) convertView).setText(title);
xp_list.expandGroup(groupPosition);
return convertView;
}
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
if (convertView == null) {
//Logger.Log("inside contain", "inside view null=");
convertView = LayoutInflater.from(parent.getContext()).inflate(android.R.layout.simple_list_item_multiple_choice, parent,
false);
}
String singleObj = getChild(groupPosition, childPosition);
if (selectedIdList.contains(singleObj)) {
Log.i("inside contain", "id=" + singleObj);
((CheckedTextView) convertView).setChecked(true);
} else {
((CheckedTextView) convertView).setChecked(false);
}
TextView titleView = (TextView) convertView;
titleView.setText(singleObj);
titleView.setTextColor(Color.GRAY);
convertView.setTag(singleObj);
return convertView;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
}
答案 0 :(得分:0)
/**Try to Use Below code Snipet**/
implements ExpandableListView.OnChildClickListener
in your activity class
your_expListView.setOnChildClickListener(this);
Then override the onchildCount method of Expandable Listview Method
@Override
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id)
{
/**Do you Selectable code over here**/
return false;
}