пометьте radioButton при нажатии элемента внутри listView (CheckedTextView) - PullRequest
0 голосов
/ 27 августа 2018

Я использую listView, который входит в LinearLayout. Этот просмотр списка использует ArrayAdapter из simple_list_item_single_choice с добавленным RadioButton. Это Radiobutton в listView, я хотел бы отметить, когда элемент из listView щелкают. Но ничего не произойдет, если я нажму на элемент в listView. Этот XML связан с моей деятельностью:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="500dp"
        android:layout_height="400dp"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_marginStart="20dp"
        android:layout_marginTop="20dp"
        android:orientation="vertical">
        <ListView
            android:id="@+id/listView1"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
        </ListView>
    </LinearLayout>

Для элементов в listView я беру "simple_list_item_single_choice" и настраиваю его, изображение, короткий текст и кнопку радио, как это:

<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeightSmall"
android:checkMark="?android:attr/listChoiceIndicatorSingle"
android:drawablePadding="10dp"
android:drawableStart="@drawable/own_icon"
android:gravity="center_vertical"
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
android:textAppearance="?android:attr/textAppearanceListItemSmall"
android:textColor="@color/colorBlack">

А вот мой фрагмент:

public class Example extends Fragment {
    ListView listView1;
    ArrayAdapter<String> detecAdapter;
    ListItemClicked listItemClicked;
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    View view = inflater.inflate(R.layout.fragment1, container, false);

    listView1 = (ListView) view.findViewById(R.id.listView1);

    detecAdapter = new ArrayAdapter<String>(getContext(), R.layout.simple_list_choice_custom);

    listView1.setAdapter(detecAdapter);
    listItemClicked = new ListItemClicked();

return view;
}

@Override
public void onStart() {
    listView1.setOnItemClickListener(listItemClicked);
}

class ListItemClicked implements AdapterView.OnItemClickListener
{
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position) {
        listView1.setItemChecked(position,true);
        Log.d(TAG, "ListElementClicked: "+position);
    }
}

}

Когда я щелкаю элемент из списка, я получаю правильный вывод log.d, правильная позиция, которую я щелкнул в списке. Итак, я нажимаю на элемент в списке, но кнопка RadioButton (например, android: checkMark = "? Android: attr / listChoiceIndicatorSingle") не помечена.

Нужно ли мне устанавливать android: checked = "true" в моем обычном simple_list_choice_custom.xml при нажатии на элемент в списке?

...