4

AlertDialog に提示するアイテムの膨大なリストがあります。ユーザーが 1 つのアイテムを選択する可能性が最も高い領域にスクロールされたリストをユーザーに提示したいと思います。私は使用しています

AlertDialog.Builder.setSingleChoiceItems(myAdapter, ...).  
ArrayAdapter<MyType> myAdapter;

私が苦労している問題は、項目を選択済みとして表示することが論理的に正しくない場合に項目までスクロールする方法です。

ListView結果からを取得しようとしましたAlertDialog。しかし、それは空です(Builder作成して表示した後でも)。res/layout で 平面を膨らませて
、人口を強制しようとしました。効果がないようでした。AlertDialogの 設定をしてみました。() は呼び出されません。 ListViewListViewlistView.scrollTo(x, y)
OnShowListeneronShow

回避策を知っている人はいますか?

4

1 に答える 1

2

ListView クラスの一部である関数を使用できます。

smoothScrollByOffset(int offset);

また

smoothScrollToPosition(int position);

または

1 つずつスクロールする場合は、次のような関数を使用できます。

private void scrollToNext() {
int currentPosition = getListView().getFirstVisiblePosition();
if (currentPosition == getListView().getCount() - 1)
    return;
getListView().setSelection(currentPosition + 1);
getListView().clearFocus();
}

private void scrollToPrevious() {
int currentPosition = getListView().getFirstVisiblePosition();
if (currentPosition == 0)
    return;
getListView().setSelection(currentPosition - 1);
getListView().clearFocus();
}
于 2013-02-14T21:15:47.063 に答える