我有一个ListView,它包含更多元素,然后我可以一次显示.现在我想让所有元素的索引完全可见( - >除了那些只是部分可见的元素).这时我使用getFirstVisiblePosition()
及getLastVisiblePosition()
成for-loop
迭代他们,但我想这些方法是不准确的.
有没有更好的解决方案?
Sam*_*Sam 30
ListView将其行组织在一个自上而下的列表中,您可以使用该列表进行访问getChildAt()
.所以你想要的很简单.让我们得到第一个和最后一个视图,然后检查它们是否完全可见:
// getTop() and getBottom() are relative to the ListView,
// so if getTop() is negative, it is not fully visible
int first = 0;
if(listView.getChildAt(first).getTop() < 0)
first++;
int last = listView.getChildCount() - 1;
if(listView.getChildAt(last).getBottom() > listView.getHeight())
last--;
// Now loop through your rows
for( ; first <= last; first++) {
// Do something
View row = listView.getChildAt(first);
}
Run Code Online (Sandbox Code Playgroud)
加成
现在我想让所有元素的索引完全可见
我不确定那句话是什么意思.如果上面的代码不是您想要的索引,您可以使用:
int first = listView.getFirstVisiblePosition();
if(listView.getChildAt(0).getTop() < 0)
first++;
Run Code Online (Sandbox Code Playgroud)
有一个相对于你的适配器的索引(即adapter.getItem(first)
.)
归档时间: |
|
查看次数: |
9482 次 |
最近记录: |