Android:ListView条件滚动

时间:2013-01-22 20:44:43

标签: android

我有2个窗格布局。左边是ListView,权利中的一些内容与列表相关联。内容是可滚动的。 如果内容向前移动,我希望仅当此项目尚未显示时才会继续列表。这可以防止列表必须在每次更改内容时更新。我还希望列表继续整整一页。 有什么像

listView.isThisElementCurrentlyShown(int nr)

listView.moveAheadOnePage(int direction)

提前致谢。

1 个答案:

答案 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

的代码