0

Есть ListView, в котором 2 элемента.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent">

    <TextView
            android:text="TextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:id="@+id/name" android:layout_weight="1"/>
    <CheckBox
            android:text="CheckBox"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:id="@+id/check" android:layout_weight="1"/>
</LinearLayout>

Вот так я отображаю свой String массив в ListView.

   ArrayAdapter<String> adapter = new ArrayAdapter<String>(getContext(), R.layout.markers_list, R.id.name, name_mark);
            list.setAdapter(adapter);

Как обращаться к LV с 1 элементом, я знаю. Но как мне отдельно расчленить, что должно происходить при нажатии на TextView, а что при нажатии на ChekBox? Просто ступор.

UPD.

Отказался от Фрагмента и начал выводить ListView в Активити. Вывел. Написал метод в Активити

   public void qwe(View v){
        TextView tx = v.findViewById(R.id.name);
        tx.setText("sdfg");
    }

и повесил его на кнопку

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent"
              android:layout_height="match_parent">

    <CheckBox
            android:text="CheckBox"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:id="@+id/check" android:layout_weight="1"
            android:focusable="false"
            android:focusableInTouchMode="false" android:onClick="qwe"/>
    <TextView
            android:text="TextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:id="@+id/name" android:layout_weight="1"/>
</LinearLayout>

Где ошибка?

Wlad
  • 2,006
  • нужно писать кастомный адаптер и там вешать слушатели на каждый элемент айтема отдельно – pavlofff Sep 06 '19 at 10:19
  • @pavlofff а можно пример или ссылку? – Wlad Sep 06 '19 at 10:23
  • @pavlofff во фрагменте =( – Wlad Sep 06 '19 at 10:25
  • 1
    тогда такая схема - слушатели на элементы айтема в кастомном адаптере, в примере это кнопка, но виджет может быть любой. если требуется событие о клике еще и передать в активити, то нужно в адаптере организовать колбэк на событие – pavlofff Sep 06 '19 at 10:35
  • @pavlofff скажите, а как программно можно сделать нажатие на ВСЕ айтемы списка? – Wlad Sep 06 '19 at 10:56
  • @pavlofff нет, не для чекбоксов. нужна именно имитация нажатия в коде на основные айтемы, которые сформировались из заданного массива. вроде понятно объяснил... нужно программно setOnItemClickListener на всех итемы. – Wlad Sep 06 '19 at 11:30
  • @pavlofff знаю, что нажаите делается через View.performClick(); как получить View всего LV ? – Wlad Sep 06 '19 at 11:31
  • @pavlofff посмотрел ссылку на кастомный адаптер. весь OnClick в другом классе. может есть примеры адаптера, чтобы onClick доп.кнопок был там, где и LV вызывается? слишком много чего надо передавать в кастомный адаптер тогда. – Wlad Sep 06 '19 at 12:26
  • @pavlofff отказался от Фрагмента и переделал на активити, но там опять ошибка. гляньте UPD в мейн-посте. – Wlad Sep 06 '19 at 15:02
  • дело в том, что при разработке может появляться более, чем одна причина ошибки, поэтому в вопросах с ошибками, нужно прикладывать стектрейс этой ошибки, чтобы было понятно, в чем именно дело – pavlofff Sep 06 '19 at 21:49

0 Answers0