java - 如何从 ExpandableListView 获取特定视图?
问题描述
我在其中创建了一个可扩展的列表视图和两个单选按钮。我想获取在我的主活动中按下某个按钮时选择的单选按钮的值。我的 ExpandableListView 工作正常,但我无法获得在主要活动中选择的单选按钮。
public class ExpandableMenuListAdapter extends BaseExpandableListAdapter
{
private Context context;
private List<String> listDataHeader;
private HashMap<String,List<List<String>>> listHashMap;
public ExpandableMenuListAdapter(Context context, List<String> listDataHeader, HashMap<String, List<List<String>>> listHashMap) {
this.context = context;
this.listDataHeader = listDataHeader;
this.listHashMap = listHashMap;
}
@Override
public int getGroupCount() {
return listDataHeader.size();
}
@Override
public int getChildrenCount(int groupPosition) {
return Objects.requireNonNull(listHashMap.get(listDataHeader.get(groupPosition))).size();
}
@Override
public Object getGroup(int groupPosition) {
return listDataHeader.get(groupPosition);
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return Objects.requireNonNull(listHashMap.get(listDataHeader.get(groupPosition))).get(childPosition);
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
String headerTitle = (String)(getGroup(groupPosition)).toString();
if (convertView==null)
{
LayoutInflater inflater =(LayoutInflater)this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.list_menu_days_group,null);
}
TextView lblListHeader = convertView.findViewById(R.id.list_days);
lblListHeader.setTypeface(null, Typeface.BOLD);
lblListHeader.setText(headerTitle);
return convertView;
}
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
List<String> childText = (List<String>) getChild(groupPosition,childPosition);
if (convertView==null)
{
LayoutInflater inflater =(LayoutInflater)this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.list_menu_item,null);
}
RadioButton txtListChild = convertView.findViewById(R.id.menu_list_daily1);
RadioButton txtListChild2 = convertView.findViewById(R.id.menu_list_daily2);
txtListChild.setText(childText.get(0));
txtListChild2.setText(childText.get(1));
ViewsList.menu.add(convertView);
return convertView;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return false;
}
}
解决方案
在代码中使用onChildClick
方法。单击子项时会自动调用此方法
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
//get your radio here from the view v and do whatever you want
return true;
}
推荐阅读
- regex - 在 VScode 中查找和删除组标签
- python - 检查每个字母
- uwp - 为什么 Header 比 Title 大,什么时候使用?
- vulkan - Vulkan 队列提交同步 - vkWaitForFences vs vkQueueWaitIdle
- javascript - 无法在基于反应的应用程序上单击带有 selenium webdriver 的按钮
- python - session.add() 和会话方法不存在
- ios - SwiftUI:我想每天显示一个随机元素,即使在重新启动应用程序之后也是如此
- typescript - 类型“{}”上不存在属性“onMessage”。& “{}”类型的参数不能分配给“null”类型的参数
- mysql - 如果 Id,如何获取名称
- python - 计算列表列表中的词频