【问题标题】:getFirstVisiblePosition() returns wrong value in Gallery ViewgetFirstVisiblePosition() 在图库视图中返回错误值
【发布时间】:2017-12-13 17:50:36
【问题描述】:

我有一个使用扩展 BaseAdapter 的 SimpleAdapter 创建的库视图。它包含的项目比它在屏幕中所能容纳的要多。

所以我使用Gallery.getFirstVisiblePosition()Gallery.getLastVisiblePosition() 来获取第一个和最后一个可见位置。但是这些函数并不总是返回正确的值,尤其是在通过调用mGallery.setSelection() 后跟SimpleAdapter.notifyDataChanged() 调用来设置所选位置之后。大多数情况下,即使第一个元素不可见,getFirstVisiblePosition() 也会返回 0。

还要注意没有。图库中可见项目的数量在纵向和横向模式下是不同的。 getFirstVisiblePosition() 返回的值在横向模式下看起来正确,但在纵向模式下返回错误。

有人有什么想法/想法吗?

谢谢!

【问题讨论】:

标签: android listview


【解决方案1】:

第一个可见位置只会在布局后更新。您不能调用 notifyDatasetChanged() 并立即获得第一个可见位置,您必须等待下一个布局传递。

【讨论】:

  • 感谢罗曼的快速回复!但不是马上获得第一个可见位置,而是等到下一个布局通过。可能我应该添加更多的实现细节。我正在将照片一张一张地添加到图库中。添加图像后,我会调用 Gallery.setSelection() 方法,以便始终可见最后添加的图像。添加图像后,我在 SimpleAdapter 中调用 notifydataChanged()。所以我的问题是,notifyDataChanged() 调用了 Gallery 中的哪个侦听器?它似乎没有调用 onItemSelectedListener 并且似乎没有什么文档。
  • 我怎么知道 HRM Android 已经决定做一个新的布局通过?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
相关资源
最近更新 更多