Java Android-在AlertDialog中刷新数据?

Java Android-在AlertDialog中刷新数据?,java,android,android-alertdialog,Java,Android,Android Alertdialog,因此,如果我创建这样的AlertDialog: AlertDialog.Builder b = new AlertDialog.Builder(); b.setItems(MyStringArray, MyListener); b.create().show(); 然后我想更新列表中的项目,即MyStringArray已更改为具有更多或更少的项目。我似乎找不到办法来做这件事。到目前为止,我已尝试从AlertDialog获取ListView,但似乎无法使.setAdapter正常工作。这是正确的

因此,如果我创建这样的AlertDialog:

AlertDialog.Builder b = new AlertDialog.Builder();
b.setItems(MyStringArray, MyListener);
b.create().show();

然后我想更新列表中的项目,即MyStringArray已更改为具有更多或更少的项目。我似乎找不到办法来做这件事。到目前为止,我已尝试从AlertDialog获取ListView,但似乎无法使.setAdapter正常工作。这是正确的方法,还是有更好的方法来实现这一点?

我自己还没有尝试过这一点,但从我构建的所有其他应用程序来看,我确信这将解决您的问题

不要使用setItems,请尝试使用
setAdapter()
方法并传入一个
ArrayAdapter
,该适配器已使用
字符串的
数组中的数据初始化。然后,当您知道数据已更改时,可以使用
getListView()
获取视图对象,并从中调用
getAdapter()
,这样您就可以直接使用数据集了。您可以清除它,如果愿意,可以重新初始化它,也可以随意添加/删除项目。从适配器对象中,如果调用
notifyDataSetChanged()
,则应使用刚才提供给适配器的新数据集触发重新绘制

希望这能帮到你。如果没有,请告诉我


DSC

如果您像我一样,希望使用默认适配器(例如,用于多选项项目),那么还有一种方法

与任何其他适配器一样,只需更新字符串数组对象,从对话框实例获取适配器,将其强制转换为适当的适配器并使其无效

AlertDialog.Builder b = new AlertDialog.Builder();
b.setItems(MyStringArray, MyListener);
AlertDialog instance = b.create();
instance.show();

// Later when you need to update
MyStringArray[0] = "puf";
ListView list = instance.getListView();
// Now according to whether you used cursor or array for supplying items to the builder
// you have to cast adapter to either CursorAdapter or ArrayAdapter
ArrayAdapter adapter = (ArrayAdapter)list.getAdapter();
adapter.notifyDataSetChanged();

在使用这些对话框时,我还是个新手。我应该保留DialogInterface.OnClickListener作为OnClickListener,还是像使用普通Listview一样使用View.OnClickListener?我真是太蠢了,当我可以尝试的时候问这个问题。看起来DialogInterface.OnClickListener是一个不错的选择。