【问题标题】:CheckBox checked state in a ListViewListView 中的 CheckBox 选中状态
【发布时间】:2010-04-10 07:09:23
【问题描述】:

我正在使用带有 CheckBox 的 ListView,但正如你们大多数人所知,当您向下滚动滚动条时,当您向后滚动滚动条时,已选中的 CheckBox 将被取消选中。所以我一直在阅读,我发现您可以(使用getView)将CB的id传递给getView的位置参数以保存CheckBox状态!

但我不能将 getView 与 SimpleCursorAdapter 一起使用,可以吗?因为我使用的是 bindView!

谢谢

【问题讨论】:

  • 您是在问关于 SimpleCursorAdapter 的是/否问题,还是在问如何使用 BaseAdapter? BaseAdapter 更加灵活,但需要这样编码才能使用。
  • 我在问是否有办法继续使用 SimpleCursorAdapter 并仍然设法解决问题!否则,我愿意接受建议,谢谢

标签: android listview checkbox


【解决方案1】:

正在发生的事情是回收。 7 行适合您的屏幕,当您向下滚动时,顶部的一行将被回收用于底部的新行。您应该做的是保存复选框的状态。

这是一个类似问题的好解决方案:

https://github.com/commonsguy/cw-android/tree/master/FancyLists/RateList

【讨论】:

    【解决方案2】:

    在我使用 setViewBinder 向上/向下滚动后,我设法恢复了复选框状态(在另一个答案中看到):

        mAdapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
        public boolean setViewValue(View view, Cursor cursor, int columnIndex) {            
            if(columnIndex==4) {
                cb=(CheckBox)view;
                cb.setChecked(cursor.getInt(4)==0? false:true);
                return true;
            }
        return false;
        }
        });
    

    但仍然发生了一些奇怪的事情,CheckBox 在 7 或 8 个位置后被回收。如果我检查第一个 CheckBox 并且有超过 10 个位置/行,则第 8 个也被检查,当我检查最后一个时也会发生同样的情况,8 个位置将有一个选中的 CheckBox。

    有什么想法吗?想法?救命!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-13
      • 2014-09-02
      • 1970-01-01
      • 1970-01-01
      • 2011-09-04
      • 2013-07-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多