Java Android-在AlertDialog中刷新数据?
因此,如果我创建这样的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.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是一个不错的选择。