сохранить состояние radioButton в адаптере расширяемого списка - PullRequest
0 голосов
/ 27 марта 2020

У меня есть адаптер расширяемого списка с 6 элементами. Я добавил радио-кнопки в виде списка. Все отлично работает Я хотел бы улучшить эту функцию, сохранив последний выбранный элемент в списке радиокнопок как отмеченный / выбранный.

Я пытался сохранить дочерний элемент pos как currentpos, но всегда первый элемент отмечен. даже если я выберу другие элементы. Что мне здесь не хватает? Заранее спасибо за ваше время.

public View getChildView(int groupPos, final int childPos,
                         boolean isLastChild, View convertView, ViewGroup parent) {
    final String childText = (String) getChild(groupPos, childPos);

    if (convertView == null) {
        LayoutInflater layoutInflater = (LayoutInflater) this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = layoutInflater.inflate(R.layout.studio_child_list, null);
    }

    RadioButton radioButton = convertView.findViewById(R.id.radioChildLists);
    radioButton.setText(childText);
    int tag = Integer.parseInt(childText.split(" ")[1]) - 1;
    // here
    radioButton.setChecked(childPos == currentpos);
    radioButton.setTag(tag);

    radioButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Log.d("ExpList", "onClick: group " + groupPos + ": child " + childPos + " tag " + view.getTag().toString());
            getStudioTag.onActionPerformed(view.getTag().toString(), childText);
            // here
            currentpos = (Integer) view.getTag();
            notifyDataSetChanged();
        }
    });
    return convertView;
}

Я использую адаптер в MainActivity, как показано ниже

ExpandableListView listView = new ExpandableListView(MainActivity.this);
listView.setGroupIndicator(null);
ExpandableListAdapter expandableListAdapter = new ExpandableListAdapter(MainActivity.this, studioListHeader, studioChildList, MainActivity.this::onActionPerformed);
listView.setAdapter(expandableListAdapter);
builder.setView(listView);
studioExpanddialog = builder.create();
studioExpanddialog.show();
...