Как я могу получить конкретный вид из ExpandableListView? - PullRequest
0 голосов
/ 28 мая 2019

Я создал расширяемый вид списка и две радиокнопки в нем.Я хочу получить значение переключателя, который выбирается при нажатии какой-либо кнопки в моей основной деятельности.Мой 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;
    }
}

1 Ответ

0 голосов
/ 28 мая 2019

Используйте 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;
}
...