#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 и позволяет просмотру элемента обрабатывать его события.