【问题标题】:how to capture the checkbox event in ListView如何在 ListView 中捕获复选框事件
【发布时间】:2023-04-06 14:21:02
【问题描述】:

我在 ListView 中只添加了复选框。
list_checkbox.xml:
<?xml version="1.0" encoding="utf-8"?>
<CheckBox xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="42px">
</CheckBox>

在java中;要捕获列表上的事件,我使用了这个::

items1={" "," "," "," "}; //blank i.e. no text near checkbox

lv1.setAdapter(new ArrayAdapter<String>(this, R.layout.list_checkbox, items1));
lv1.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view,int position, long id) {

      // When clicked,put code here.....
    }
  });

但现在在哪里以及如何捕获复选框事件? 请详细说明。
我是新手。
谢谢..

【问题讨论】:

  • 您已经回答了自己。在 onItemClick 中,您已经在此处评论了您的答案。下一个问题是当一个项目被点击时你想做什么。
  • 当一个项目在列表中被点击时。我想捕获一个复选框。当第一个复选框被选中时调用函数 A 如果第三个被选中调用函数 B 等等..

标签: android listview checkbox android-listview android-arrayadapter


【解决方案1】:

如果您将可聚焦或可点击的视图放入 ListView,那么您的 OnItemClickListener 将不会被调用。 复选框默认是可点击的,所以在这种情况下设置 OnItemClickListener 不会做任何事情。

在这种情况下,您可以做的是实现一个自定义适配器(只需扩展 ArrayAdapter)并为您为 ListView 提供的每个视图添加一个 OnClickListener。

public class TestAdapter extends ArrayAdapter {
    ...
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View v = super.getView(position, convertView, parent);
        v.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // Do your logic here eg. if ((CheckBox)v).isChecked()...
             }
         });
         return v;
    }
}

您可以在here 找到关于此主题的非常好的教程。整章都值得阅读,但问题的答案在第 112 页,交互式行。

另请参阅this Stack Overflow 问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    • 2010-11-30
    • 1970-01-01
    • 2017-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多