1

私は2ペインのレイアウトを持っています。左側は 、右側はListViewリストにリンクされたコンテンツです。コンテンツはスクロール可能です。コンテンツが進む場合、このアイテムがまだ表示されていない場合にのみリストを進めたいと思います。これにより、コンテンツが変更されるたびにリストを更新する必要がなくなります。また、リストを 1 ページ分先に進めたいと考えています。のようなものはありますか

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ことができるはずです。この疑似コードのようなもの (これを書く必要があります):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

于 2013-01-22T21:12:17.250 に答える