我有2个窗格布局。左边是ListView
,权利中的一些内容与列表相关联。内容是可滚动的。
如果内容向前移动,我希望仅当此项目尚未显示时才会继续列表。这可以防止列表必须在每次更改内容时更新。我还希望列表继续整整一页。
有什么像
listView.isThisElementCurrentlyShown(int nr)
和
listView.moveAheadOnePage(int direction)
提前致谢。
答案 0 :(得分:1)
以下是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()
来计算该设备上可见的行数,然后提前查看列表视图。像这样的伪代码(你必须写这个):
public void moveAheadOnePage(int direction){//direction: 0-up, 1-down
int numVisibleRows = getLastVisiblePosition() - getFirstVisiblePosition();
this.setSelected(currentSelection + numVisibleRows) // +/- depending on direction
}
请注意,滚动浏览列表视图时这些都是昂贵的调用,所以你肯定要明智地实现〜
编辑:更新了包含return false