[英]Insert RadioButton in a group of an Expandable List View
我有一些包含RadioButton的组的可扩展列表视图。
问题在于,只能同时启用这些RadioButton中的一个,但是现在我可以选择所有这些。
这是实现的适配器的代码
public class ActionPlanExpandableListAdapter extends BaseExpandableListAdapter {
private Context context;
private ArrayList<ActionPlan> listActionPlan;
private Map<ActionPlan,ArrayList<Contact>> mapChild;
public ActionPlanExpandableListAdapter(Context context, ArrayList<ActionPlan> listActionPlan, Map<ActionPlan, ArrayList<Contact>> mapChild) {
this.context = context;
this.listActionPlan = listActionPlan;
this.mapChild = mapChild;
}
...
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
String groupTitle = context.getString(R.string.actionPlanGroupHeader) + (groupPosition+1);
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.action_plan_alarm_expandable_group, null);
}
TextView tvGroup = (TextView) convertView.findViewById(R.id.tvAlertName);
tvGroup.setText(groupTitle);
RadioButton selectGroup = (RadioButton)convertView.findViewById(R.id.rbSelectActionPlan);
selectGroup.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
return convertView;
}
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
Contact contact = getChild(groupPosition,childPosition);
String item = contact.getName();
convertView = LayoutInflater.from(context).inflate(R.layout.action_plan_alarm_expandable_child, null);
TextView contactName = (TextView) convertView.findViewById(R.id.tvContactName);
TextView contactRelationship = (TextView) convertView.findViewById(R.id.tvContactRelationship);
TextView contactPhoneNumber = (TextView) convertView.findViewById(R.id.tvContactPhoneNumber);
contactName.setText(contact.getName());
contactRelationship.setText(contact.getRelationship());
contactPhoneNumber.setText(Integer.toString(contact.getPhoneNumber1()) + ", " + Integer.toString(contact.getPhoneNumber2()) + ", " + Integer.toString(contact.getPhoneNumber3()));
return convertView;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return false;
}
}
也许您只有不好的适配器实现
尝试这样的事情
getGroupView { ... RadioButton selectGroup =(RadioButton)convertView.findViewById(R.id.rbSelectActionPlan); selectGroup.setChecked(isExpanded); ... }
我不知道哪个属性设置了检查单选按钮。 保持广播btn是否选中时,模型中必须具有相同的属性。 或者在展开时设置单选btn检查。
最后我解决了这个问题。 首先将此变量添加到适配器。
private int selectedPosition = -1;
然后,我修改了getGroupView。
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
String groupTitle = context.getString(R.string.actionPlanGroupHeader) + (groupPosition+1);
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.action_plan_alarm_expandable_group, null);
}
TextView tvGroup = (TextView) convertView.findViewById(R.id.tvAlertName);
tvGroup.setText(groupTitle);
RadioButton selectGroup = (RadioButton)convertView.findViewById(R.id.rbSelectActionPlan);
selectGroup.setChecked(groupPosition == selectedPosition);
selectGroup.setTag(groupPosition);
selectGroup.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
buttonCheckChanged(view);
}
});
return convertView;
}
private void buttonCheckChanged(View view) {
selectedPosition = (Integer) view.getTag();
notifyDataSetChanged();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.