使用可扩展列表视图作为单选按钮
using Expandable listview as radio button
我在我的应用程序中使用了可扩展列表视图。现在我想做的是用户一次只显示一项 child ....
如果用户点击第一项,那么视图应该是..
项目 1:
单选按钮 1
单选按钮 2
项目 2:
现在如果用户点击第一项后点击第二项,那么它应该显示..
项目 1:
项目 2:
单选按钮 1
单选按钮 2
如何实现?
我的适配器的 getChildView 方法是..
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
Child child = (Child) getChild(groupPosition, childPosition);
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) context
.getSystemService(context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.child_item, null);
}
RadioButton rb1 = (RadioButton) convertView.findViewById(R.id.rbtn1);
RadioButton rb2 = (RadioButton) convertView.findViewById(R.id.rbtn2);
return convertView;
}
child_item
这里包含一个单选组,getGroupView
方法是..
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
Group group = (Group) getGroup(groupPosition);
if (convertView == null) {
LayoutInflater inf = (LayoutInflater) context
.getSystemService(context.LAYOUT_INFLATER_SERVICE);
convertView = inf.inflate(R.layout.group_item, null);
}
TextView tv = (TextView) convertView.findViewById(R.id.group_name);
tv.setText(group.getName());
return convertView;
}
这里的问题是,点击第一个之后如果我点击第二个,那么第一个和第二个都处于选中状态并且显示内容而不是仅显示第二个项目的内容..
我已将 CHOICE_MODE
设置为单一选择.. 但它没有帮助。
即使我不知道任何内置函数,但你可以试试这个代码。
YourexpandableList.setOnGroupExpandListener(new OnGroupExpandListener() {
int previousGroup = -1;
@Override
public void onGroupExpand(int groupPosition) {
if(groupPosition != previousGroup)
YourexpandableList.collapseGroup(previousGroup);
previousGroup = groupPosition;
}
});
我在我的应用程序中使用了可扩展列表视图。现在我想做的是用户一次只显示一项 child .... 如果用户点击第一项,那么视图应该是..
项目 1:
单选按钮 1
单选按钮 2
项目 2:
现在如果用户点击第一项后点击第二项,那么它应该显示..
项目 1:
项目 2:
单选按钮 1
单选按钮 2
如何实现?
我的适配器的 getChildView 方法是..
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
Child child = (Child) getChild(groupPosition, childPosition);
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) context
.getSystemService(context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.child_item, null);
}
RadioButton rb1 = (RadioButton) convertView.findViewById(R.id.rbtn1);
RadioButton rb2 = (RadioButton) convertView.findViewById(R.id.rbtn2);
return convertView;
}
child_item
这里包含一个单选组,getGroupView
方法是..
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
Group group = (Group) getGroup(groupPosition);
if (convertView == null) {
LayoutInflater inf = (LayoutInflater) context
.getSystemService(context.LAYOUT_INFLATER_SERVICE);
convertView = inf.inflate(R.layout.group_item, null);
}
TextView tv = (TextView) convertView.findViewById(R.id.group_name);
tv.setText(group.getName());
return convertView;
}
这里的问题是,点击第一个之后如果我点击第二个,那么第一个和第二个都处于选中状态并且显示内容而不是仅显示第二个项目的内容..
我已将 CHOICE_MODE
设置为单一选择.. 但它没有帮助。
即使我不知道任何内置函数,但你可以试试这个代码。
YourexpandableList.setOnGroupExpandListener(new OnGroupExpandListener() {
int previousGroup = -1;
@Override
public void onGroupExpand(int groupPosition) {
if(groupPosition != previousGroup)
YourexpandableList.collapseGroup(previousGroup);
previousGroup = groupPosition;
}
});