4

我在 AlertDialog 中显示了大量的项目。我想向用户展示滚动到他们最有可能从中选择一项的区域的列表。我在用着

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

或者

如果您想一一滚动,可以使用以下功能:

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 回答