1

我有一个 2 窗格布局。左边是一个ListView,右边是一些与列表链接的内容。内容是可滚动的。如果内容向前移动,我希望列表仅在该项目尚未显示时向前移动。这可以防止列表必须在每次内容更改时更新。我还希望该列表继续一整页。有没有类似的东西

listView.isThisElementCurrentlyShown(int nr)

listView.moveAheadOnePage(int direction)

?

提前致谢。

4

1 回答 1

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()计算该设备上可见的行数,然后将 listview 推进这么多位置。像这样的伪代码(你必须写这个):

public void moveAheadOnePage(int direction){//direction: 0-up, 1-down
    int numVisibleRows = getLastVisiblePosition() - getFirstVisiblePosition();
    this.setSelected(currentSelection + numVisibleRows) // +/- depending on direction
}

请注意,这些都是在滚动列表视图时进行的昂贵调用,因此您必须明智地实施~

编辑:更新的代码包括return false

于 2013-01-22T21:12:17.250 回答