onCheckedChanged 多次触发,带有复选框的 Listview

2024-01-09

我有一个带有复选框的 ListView:

  1. Oncheckedchanged(..)当用户选中/取消选中列表视图上的项目时调用
  2. OncheckedChanged(..)当用户通过单击列表项时再次调用onItemClick(.....)

这是一个已知的问题?如何区分事件。

public View getView(int position, View convertView, ViewGroup parent) {

ViewHolder viewHolder = null;
if (convertView == null) {
    LayoutInflater inflator = context.getLayoutInflater();
    convertView = inflator.inflate(R.layout.row, null);
    viewHolder = new ViewHolder();
    viewHolder.text = (TextView) convertView.findViewById(R.id.label);
    viewHolder.checkbox = (CheckBox) convertView.findViewById(R.id.check);
    viewHolder.imageview= (ImageView) convertView.findViewById(R.id.imageView1);
    viewHolder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    int getPosition = (Integer) buttonView.getTag();  // Here we get the position that we have set for the checkbox using setTag.
                    list.get(getPosition).setSelected(buttonView.isChecked()); // Set the value of checkbox to maintain its state.
                }
            });
    convertView.setTag(viewHolder);
    convertView.setTag(R.id.label, viewHolder.text);
    convertView.setTag(R.id.check, viewHolder.checkbox);
    convertView.setTag(R.id.imageView1, viewHolder.imageview);

} else {
    viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.checkbox.setTag(position); // This line is important.
viewHolder.imageview.setTag(position);
viewHolder.text.setText(list.get(position).getName());
viewHolder.checkbox.setChecked(list.get(position).isSelected());


//        change the default-image here
if(list.get(position).getcontact_id()==5)
{
    viewHolder.imageview.setImageResource(android.R.drawable.ic_dialog_map);
}...
..


 return convertView;
 }

EDIT

onCheckedChanged() 被调用

  1. 一旦没有选择任何项目并且用户单击复选框
  2. 如果列表由 3 个项目组成,并且当用户单击任何其他项目时,将调用 onItemclick() 并触发 onCheckedChanged() 3 次(=no: 列表视图中的项目数)

将 onCheckChangeListener 替换为 onClickListener。

checkChanged 将被调用两次,因为当您调用 setChecked() 方法和单击复选框时都会调用它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

onCheckedChanged 多次触发,带有复选框的 Listview 的相关文章

随机推荐

  • Android Studio 设计时数据绑定回退/默认值

    我正在使用 Android 数据绑定 效果很好
  • JAXB 覆盖列表的 @XmlElement 类型

    有一个简单的类Bean1带有类型的子列表BeanChild1 XmlRootElement name bean XmlAccessorType XmlAccessType PROPERTY public static class Bean1
  • 如何以特定格式对数组中的奇数和偶数进行排序

    我有一个像这样的向量 seq vector lt c 3 12 5 9 11 8 4 6 7 11 15 3 9 10 12 2 我想按奇数降序排列它们 然后按偶数升序排列它们 上述 seq vector 的输出将是 new seq vec
  • 使用 Laravel 迁移将默认值设置为 NULL

    我正在迁移中的表中添加一个字段 我希望允许该字段为 NULL 但我也希望它默认为 NULL 我在默认方法中放置什么 我担心把 NULL in 将尝试放置一串NULL我显然不想要 请帮忙 Schema table item categorie
  • 无法更改复合类型,因为列正在使用它

    我正在尝试更改表中的列当前正在使用的复合类型的属性 我正在使用命令 ALTER TYPE typeName ALTER ATTRIBUTE attributeName SET DATA TYPE text 不幸的是 我收到错误 ERROR
  • 在项目中使用 gradle 插件,其依赖项也使用相同的插件

    我是 gradle 新手 从 Maven 离开 现在我有一个问题 我有一个 gradle 构建 我想在其中使用com bmuschko nexus插入 但我的项目依赖于另一个项目 我也想在其中使用com bmuschko nexus plu
  • Bonobo Git 服务器 - HTTP 错误 500.19 - 代码:0x80070021

    安装后访问系统时出现此错误 操作系统 Windows 2012 R2 我遇到了同样的问题 我相信 IIS 不知何故丢失了 MVC 框架的注册 通过以下方式重做注册 Windows 8 Windows Server 2012 Windows
  • 低功耗蓝牙 Android - 在后台搜索

    我想知道是否可以在后台检查是否有人进入或离开信标区域 例如 在 iOS 中 您可以使用以下方法didEnterRegion or didExitRegion从后台发送通知 是否有任何本地可能性或有人有解决方法 Android根本没有任何 原
  • 从 javascript 堆栈跟踪中查找 Java 实际堆栈跟踪

    我们实现了一种从 GWT 客户端记录服务器异常的通用机制 当然 其中一些是意外的异常 例如 NPE 因此我们在日志中得到了这些堆栈跟踪 摘录 java lang Throwable One or more exceptions caught
  • 使用 Android 的新指纹 API 供多个用户使用

    我们正在 Android 上创建一个时间戳应用程序 理想情况下这将使用指纹来识别用户 在一个组织中可能有大约 150 个不同的用户 指纹 API 是否允许多个用户 或者目前仅适用于设备所有者 如果这只适用于当前用户 是否有其他可用的 API
  • Jinja2 过滤器将自定义标记转换为 html

    拥有自动转义属性 我想保持这种方式 我希望用户能够输入一些自定义标记 以便有机会格式化文本 例如 s s 将被翻译成 strong strong 我相信正确的方法是编写自定义 Jinja2 过滤器 但以下方法不起作用 app templat
  • 异步实际上是如何工作的......?

    我一直在研究大量的多线程 回调 调度队列 同步和异步方式 我研究得越多 得到的就越多困惑和沮丧以至于我觉得我似乎永远无法理解它 请有人能引导我朝着正确的方向开始 到目前为止我发现的大部分信息都是关于什么是做什么和优势的东西 我什么真正想知道
  • 将文本字符串解析为 F# 代码

    如何获取应该是 F 代码的文本字符串 并将其解析为 F 代码 以在屏幕上打印结果 我猜测这个问题可以通过 NET 中的一个功能来解决 因此可以通过 F 本身或 C 来完成 这可能以什么方式解决tryfsharp org http www t
  • Numpy 多维子集

    我花了很长时间努力寻找这个问题的答案 但没有找到任何完全符合要求的答案 我有一个多维 numpy 数组 其中包含数据 在我的例子中是 3 维 和另一个数组 2 维 其中包含有关我想要沿原始数组的最后一个维度的值的信息 例如 这是一个说明问题
  • 将路径保存在字符串中

    private static final String BasePath home rafael pesquisa ImageSimilarity 我正在开发一个图像比较程序 我从某处找到了这行代码 然而 在上述情况下 路径是为 Linux
  • POWERSHELL - 添加列 + 更新几行

    我是 PowerShell 新手 我目前正在尝试合并两个不同的 csv 一个有 7 列和 31 行 另一个有3列 大约10行 他们只有 PC 列是共同的 其余的我必须添加列 我尝试过几种操作 但没有成功 这是 powershell 控制台上
  • 如何在 C#winform 中向 ListView 添加列表项?

    我有一个对象列表 我想将这些项目添加到 ListView 中 我试图按行添加每个列表项 但格式非常糟糕 它应该采用正确的表类型格式 List
  • 有没有办法使用 JavaScript 获取当前时间(以纳秒为单位)?

    所以 我知道我可以使用 JavaScript 获取当前时间 以毫秒为单位 但是 是否有可能以纳秒为单位获取当前时间 使用以下方法在大多数浏览器中实现微秒级精度 window performance now 也可以看看 https devel
  • 如何访问异步获取函数的值? [复制]

    这个问题在这里已经有答案了 我想在另一个函数中使用获取的值 我对JS真的很陌生 所以直到现在我尝试了 this setState 和函数的返回值 async fetchData const url http localhost 8080 c
  • onCheckedChanged 多次触发,带有复选框的 Listview

    我有一个带有复选框的 ListView Oncheckedchanged 当用户选中 取消选中列表视图上的项目时调用 OncheckedChanged 当用户通过单击列表项时再次调用onItemClick 这是一个已知的问题 如何区分事件