【问题标题】:Android: Getting a count of the visible children in a listviewAndroid:获取列表视图中可见子项的计数
【发布时间】:2011-10-08 01:54:22
【问题描述】:

有没有办法计算可见列表视图子项的数量?

我有一个列表视图,其中包含链接到可以随时更改的数据库的信息。当数据库更改时,我会发送一个广播通知处理列表视图的 ui 类。然后更新与改变的数据相关的子元素。我通过给每个列表视图项一个标签来实现这一点,然后遍历列表视图以找到与广播中的标签匹配的行。

我只想迭代可见的孩子。我不需要手动更新不可见的视图,因为它们会在创建时反映新数据。我目前从 listView.getfirstVisiblePosition() 迭代到 listView.getChildCount()。这总比没有好,因为我不检查可见行上方的行,但我也不想检查它们下方的行。

我检查了 android 开发者 listView 页面并没有找到任何东西。有人知道我可以计算可见儿童的数量吗?

谢谢!

【问题讨论】:

    标签: android listview count visible


    【解决方案1】:

    参考上面 greg7gkb 的评论 - 只是想指出以防有人使用它,它会使你的计数减一。应该是

    (listView1.getLastVisiblePosition() - listView1.getFirstVisiblePosition()) + 1
    

    因此,如果最后一个可见是 8 而第一个可见是 5,那么您将有 (8-5)+1 = 4 显示:5、6、7 和 8。

    看起来 A. Abiri 就在下面。

    【讨论】:

      【解决方案2】:

      这是获取可见儿童数量的快速方法:

      int visibleChildCount = (listView1.getLastVisiblePosition() - listView1.getFirstVisiblePosition()) + 1;
      

      【讨论】:

      • 啊完美,getLastVisiblePosition 似乎没有在 ListView 页面上列出。谢谢!
      • 我认为作者必须将这个答案准确地标记为正确答案。
      • 为什么要在最终结果中加 2?
      【解决方案3】:

      listView.getLastVisiblePosition(),这是你要找的吗?如果不, 遍历子视图...

      int count = 0;
      
      for (int i = 0; i <= listView.getLastVisiblePosition(); i++)
      {
          if (listView.getChildAt(i) != null)
          {
              count++;  // saying that view that counts is the one that is not null, 
                        // because sometimes you have partially visible items....
          }
      }
      

      【讨论】:

      • 正是我想要的!看起来 getLastVisiblePosition 未在 ListView 页面上列出。谢谢!
      • 非常感谢您的这一行:if(listView.getChildAt(i)!= null)
      • 有帮助,谢谢。严格来说,如果您想要查看观看次数,您可能应该执行 getLastVisiblePosition() - getFirstVisiblePosition()。
      • 如何查看日志中的计数??
      • Log.i("MyApp","Number of children: "+count);
      猜你喜欢
      • 1970-01-01
      • 2021-02-16
      • 1970-01-01
      • 2021-03-29
      • 2012-02-22
      • 1970-01-01
      • 1970-01-01
      • 2014-02-24
      • 1970-01-01
      相关资源
      最近更新 更多