我有一个 2 窗格布局。左边是一个ListView
,右边是一些与列表链接的内容。内容是可滚动的。如果内容向前移动,我希望列表仅在该项目尚未显示时向前移动。这可以防止列表必须在每次内容更改时更新。我还希望该列表继续一整页。有没有类似的东西
listView.isThisElementCurrentlyShown(int nr)
和
listView.moveAheadOnePage(int direction)
?
提前致谢。
我有一个 2 窗格布局。左边是一个ListView
,右边是一些与列表链接的内容。内容是可滚动的。如果内容向前移动,我希望列表仅在该项目尚未显示时向前移动。这可以防止列表必须在每次内容更改时更新。我还希望该列表继续一整页。有没有类似的东西
listView.isThisElementCurrentlyShown(int nr)
和
listView.moveAheadOnePage(int direction)
?
提前致谢。
这是一个例子isThisElementCurrentlyShown(Element e)
:
public boolean isThisElementCurrentlyShown(Element e){
ListView lv = getListView();
int start = lv.getFirstVisiblePosition();
for(int i=start, j=lv.getLastVisiblePosition();i<=j;i++){
if(e==lv.getItemAtPosition(i)){
return true;
}
}
return false;
}
这将告诉您该元素是否可见。
对于moveAheadOnePage
您应该能够使用 listview 的内置函数getFirstVisiblePosition()
并getLastVisiblePosition()
计算该设备上可见的行数,然后将 listview 推进这么多位置。像这样的伪代码(你必须写这个):
public void moveAheadOnePage(int direction){//direction: 0-up, 1-down
int numVisibleRows = getLastVisiblePosition() - getFirstVisiblePosition();
this.setSelected(currentSelection + numVisibleRows) // +/- depending on direction
}
请注意,这些都是在滚动列表视图时进行的昂贵调用,因此您必须明智地实施~
编辑:更新的代码包括return false