无需选择即可滚动到AlertDialog中的列表项

时间:2013-02-14 19:37:18

标签: android scroll alertdialog

我在AlertDialog中提供了大量项目。我想向用户显示滚动到最可能的区域的列表,他们将从中选择一个项目。我正在使用

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

我遇到的问题是如何在逻辑上不正确的情况下滚动到项目以将项目显示为已选中。

我尝试从生成的ListView中获取AlertDialog。但它是空的(即使在Builder创建并显示它之后) 我尝试通过在res / layout中为一架飞机ListView充气来强制填充ListViewlistView.scrollTo(x, y)似乎没有效果 我尝试为AlertDialog设置OnShowListener。永远不会调用onShow()。

有没有人知道一项解决方法?

1 个答案:

答案 0 :(得分:2)

您可以使用属于ListView类的函数:

smoothScrollByOffset(int offset);

smoothScrollToPosition(int position);

如果要逐个滚动,可以使用以下函数:

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();
}