シャーロック リストのナビゲーションについて助けが必要です。目標: ナビゲーションを開いたときに、最初の行にスクロール/フォーカスして、最初の項目が常に表示されるようにします。問題: 画面に表示できるよりも多くのアイテムがリストにある場合 (通常はランドスケープ モード)、4 番目のアイテムを選択してリストを開くと、最初のアイテムが表示されず、最後に選択したアイテムにフォーカスされます。カスタムスピナーで次のコードを使用すると機能しますが、IcsSpinnerで同じメソッドをオーバーライドしようとしても機能しませんでした。
コード:
/**
* Cusrom スピナー クラス - 開いているときは常に最初のアイテムにフォーカス * */ class CustomSpinnerSelection extends Spinner {
private boolean mToggleFlag = true;
//some constructors here
@Override
public int getSelectedItemPosition() {
// this toggle is required because this method will get called in other
// places too, the most important being called for the
// OnItemSelectedListener
if (!mToggleFlag) {
return 0; // get us to the first element
}
return super.getSelectedItemPosition();
}
@Override
public boolean performClick() {
// this method shows the list of elements from which to select one.
// we have to make the getSelectedItemPosition to return 0 so you can
// fool the Spinner and let it think that the selected item is the first
// element
mToggleFlag = false;
boolean result = super.performClick();
mToggleFlag = true;
return result;
}
}