3 回答
TA贡献1797条经验 获得超6个赞
listView.getChildAt(i)可以在其中0表示最前面的可见行,而(n-1)表示最后一个可见行(其中n是您看到的可见视图数)。
get last / first visible返回您在dataAdapter中的位置。因此,由于您从位置3开始,看起来像6个可见视图,所以当位置6-8获得时,您将获得null。
在您的示例中,getChildAt(0)将返回位置3。通常,我将位置存储在视图中,以便以后在需要值的情况下在dataAdapter上进行查找。
我认为您的for循环应如下所示:
for (int i = 0; i <= f_listView.getLastVisiblePosition() - f_listView.getFirstVisiblePosition(); i++)
希望这可以帮助。
TA贡献1818条经验 获得超7个赞
尝试
f_listView.getChildAt(positionOfChildYouWantGet - f_listView.getFirstVisiblePosition());
TA贡献1785条经验 获得超8个赞
当您调用listView1.getLastVisiblePosition()
和时listView1.getFirstVisiblePosition()
,listview
返回在列表视图中部分可见的项目的位置。例如,第一项可能是一半可见的,而最后一项可能是一半可见的。在这种情况下,即使您可以在列表视图中看到项目的一部分,适配器也尚未调用getView()
该项目的函数,因此该项目仍被视为空。
- 3 回答
- 0 关注
- 476 浏览
添加回答
举报