Не удается установить OnItemClickListener на флажок в пользовательском ListView

#android

#Android

Вопрос:

У меня есть cutsom ListView и пользовательский ArrayAdapter. Мой ListView содержит TextView и флажок. Я хочу реализовать метод onClick() для флажка.

custom_ListView.xml

 <TextView
    android:id="@ id/text_inList"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp"
    android:layout_marginStart="20dp" />

<com.google.android.material.checkbox.MaterialCheckBox
    android:id="@ id/checkbox_inList"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:focusable="false"/>
 

CustomAdapter.java

 public class CustomAdapter extends ArrayAdapter<Task> {
private List<Task> tasks;
private Activity context;

private DataBase dataBase;
private Task task;


// Constructor
public CustomAdapter(Activity context, List<Task> tasks){
    super(context,R.layout.list_with_checkbox,tasks);
    this.context=context;
    this.tasks=tasks;
}



@Override
public View getView(final int postion, View view, ViewGroup parent){
    view = context.getLayoutInflater().inflate(R.layout.list_with_checkbox, null, true);

    CheckBox checkBox=(CheckBox)view.findViewById(R.id.checkbox_inList);

    checkBox.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //position should be equal to the position of CheckBox that is clicked 
            Toast.makeText(context,String.valueOf(postion),Toast.LENGTH_SHORT).show();
        }
    });


    return view;
}
 

И проблема в том, что когда я запускаю это приложение, я обнаружил, что когда я нажимаю на любой из флажков ListView, всплывающее сообщение показывает только последнюю позицию списка. Другими словами, я не могу получить положение флажка, который нажат в ListView. Также я попытался реализовать OnItemClickListener() в MainActivity , но он не реагировал на щелчок флажка, вместо этого он реагировал на щелчок TextView.

Комментарии:

1. установите флажок в глобальную переменную, затем попробуйте OnItemClickListener()

2. @Istiak Я уже пробовал, не сработало, ListView.OnItemClickListener реагирует только при нажатии TextView без флажка

3. Рассматривали ли вы возможность перехода на RecyclerView? RecyclerView создается для удаления ListView#OnItemClickListener и позволяет просмотру элемента обрабатывать его события.