我有一个ListView,它包含的元素比我可以在一个time.Now上显示的元素多。我想让索引关闭所有元素,这些元素都是完全可见的( ->不包括那些只部分可见的元素)。现在,我在for-loop
中使用getFirstVisiblePosition()
和getLastVisiblePosition()
来迭代它们,但是这些方法并不像我想要的那样准确。
有没有更好的解决方案?
发布于 2012-11-02 00:45:41
我这样做的方式是,我将扩展您在ListView
适配器的getView
中传递的任何视图,并覆盖onAttachedToWindow
和onDetachedToWindow
方法以跟踪可见的索引。
发布于 2012-11-02 02:15:58
试试onScrollListner,你就可以使用getFirstVisiblePosition和getLastVisiblePosition了。
这个this链接,它包含类似类型的问题。我想你已经知道答案了.。
发布于 2014-12-12 19:20:18
上述代码在某种程度上是正确的。如果您需要查找视图的完全可见位置,请使用以下代码
public void onScrollStateChanged(AbsListView view, int scrollState) {
// TODO Auto-generated method stub
View v = null;
if (scrollState == 0) {
int first =0;
if (view.getChildAt(first).getTop() < 0)
first++;
int last = list.getChildCount() - 1;
if (list.getChildAt(last).getBottom() > list
.getHeight())
last--;
// Now loop through your rows
for ( ; first <= last; first++) {
// Do something
View row = view.getChildAt(first);
// postion for your row............
int i=list.getPositionForView(row);
}
}
// set the margin.
}
https://stackoverflow.com/questions/13180571
复制相似问题