android - 无法在自定义 ListView 中将 onItemClickListener 设置为 CheckBox
问题描述
我有一个 cutsom ListView 和自定义 ArrayAdapter。我的 ListView 包含 TextView 和 CheckBox。我想在 CheckBox 上实现 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 的任何 CheckBoxes 时,Toast 消息只显示列表的最后一个位置。换句话说,我无法获得在 ListView 中单击的 CheckBox 的位置。我也尝试在 MainActivity 中实现 onItemClickListener() ,但它没有对 CheckBox 单击做出反应,而是对 TextView 单击做出反应。
解决方案
推荐阅读
- javascript - 如何扩展 Ivan Sanchez 的 Leaflet.Polyline.SnakeAnim 以支持“snakepause”和“snakeplay”事件
- c++ - 如何将整数字符串转换为整数的二维向量?
- amazon-web-services - aws iot:仅当消息具有与以前不同的有效负载时,如何触发行为规则/ lambda?
- java - Spring:无法捕获抛出的异常
- ui-automation - 用新名称保存图像
- server - 云是一组数据中心吗?
- python - Beautiful Soup 查找具有多个类的元素
- ruby-on-rails - 如何路由 API 以指向特定的控制器操作,而不是在 Rails 中显示欢迎屏幕
- python - 从张量中提取多个子矩阵
- python - Python Selenium - 无法使用 XPATH 单击滑块元素