【问题标题】:Detect click on checkbox in custom ListView layout?检测单击自定义 ListView 布局中的复选框?
【发布时间】:2012-09-29 22:17:03
【问题描述】:

我知道关于同一主题还有很多其他主题,但它们似乎都不适用于我的场景,我无法让我的列表视图与他们的代码一起使用。基本上,我使用 SimpleCursorAdapter 用数据库中的项目填充列表视图。每个列表视图行都使用一个自定义布局,该布局由一个复选框和一行简单文本组成。如何检测对复选框的点击?我知道我需要使用 OnItemClickListener,但我不知道如何将其合并到我的代码中。这是我的代码:

remindersCursorAdapter = new SimpleCursorAdapter(this,
                         R.xml.view_reminders_item_layout,
                         remindersCursor, new String [] { RemindersDAO.NAME },
                         new int[] { R.id.view_reminders_item_text } );

viewRemindersListView.setAdapter(remindersCursorAdapter);

R.xml.view_reminders_item_layout 是自定义列表视图布局文件。如何从此文件中捕获复选框并为其设置点击侦听器?感谢您的所有帮助!

【问题讨论】:

  • 您的布局应该在/res/layout 文件夹中,而不是/res/xml 文件夹中。但是,要在适配器中正确使用 CheckBox only OnClickListener,您必须编写自定义适配器。

标签: java android listview checkbox onitemclicklistener


【解决方案1】:

如果您想在单击项目时选中复选框,可以通过在 onItemClick 方法中设置 Checkbox 的选中状态来实现。

  @Override
  public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {

       // now get the checkbox view. Then set the checked status.
        CheckBox checkbox = (CheckBox) view.findViewById(R.id.check_box);
        checkBox.setChecked(!checkbox.isChecked());
  }

如果您想检测仅单击复选框,则在 xml 中设置可聚焦为 true。 // 在您的自定义列表视图项中。它获取当前视图焦点。

      <Checkbox>
          android:focusable="true"
      </Checkbox>

【讨论】:

  • 您好,感谢您的回复!我实际上只想检测对复选框的单击,而不是整个列表视图行。我该怎么做?
  • 能用代码解释一下吗?我是 Android 开发新手,不知道如何执行您的建议。谢谢!
  • 我是否将上面的方法放在 onCreate() 方法之外?
  • 没有。转到您的自定义行 xml ( view_reminders_item_layout.xml ) 文件,该文件将显示一个 TextView 和一个 Checkbox。在 CheckBox 标签下添加这一行。
猜你喜欢
  • 2015-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多