次に例を示し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