【问题标题】:Custom list clicking with checkboxes自定义列表单击复选框
【发布时间】:2010-10-28 01:50:47
【问题描述】:

我使用SimpleCursorAdapterCursor 填充了ListActivity,当其中一个列表项被单击时,它会启动另一个活动。我还使用ViewBinder 对数据进行一些自定义转换。

我想为列表中的每一行添加一个CheckBox,因此我更改了视图并添加了一个CheckBox,重力正确。

添加CheckBox 删除了点击项目的能力。当您按下列表项时,不再调用我在 ListActivity 中覆盖的 onListItemClick 方法。删除 CheckBox 可以解决此问题。这是为什么呢?

另外,如果单击列表项的主要部分但在选中项目中的CheckBox 时具有附加功能,我如何设置列表以便它继续执行我所需的功能?设置onCheckedChangedListener 会起作用,还是会为列表中的每个项目重复使用相同的视图实例?

【问题讨论】:

    标签: android checkbox android-listview android-viewbinder


    【解决方案1】:

    正如here 所解释的,点击监听器仅在没有其他视图为focusable 时才起作用。将您的 CheckBox 设置为 focusable="false" 应该可以解决问题:

    <CheckBox android:focusable="false" />
    

    【讨论】:

      【解决方案2】:

      看起来SimpleCursorAdapter 对于我想要实现的目标来说太原始​​了。 我已经切换到实现CursorAdapter 并在我的newView 方法的实现中使用LayoutInflater 返回一个新视图。

        public View newView(Context context, Cursor cursor, ViewGroup parent) {
          return LayoutInflater.from(context).inflate(R.layout.alarm_row, parent, false);
        }
      

      在 bindView 中,我将自定义 OnClickListener 设置为我的主 LinearLayout,然后将另一个 OnCheckedChangeListener 设置为 CheckBox

      为了让这一切看起来正确,我必须将 LinearLayout 的背景设置为 android 的 menuitem drawable:

      android:background="@android:drawable/menuitem_background"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-29
        • 1970-01-01
        • 2012-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-07
        • 1970-01-01
        相关资源
        最近更新 更多