android - 如何在onPrepareDialog 中实现setMultiChoiceItems 项的值?

标签 android dialog

我显示复选框对话框(从数据库中检索的列表)以允许用户选择删除哪些行。因为 android 对话框缓存,我需要刷新复选框的计数和名称。 在我的 onCreateDialog 中:

dialog =  new AlertDialog.Builder( this )
       .setTitle( "Remove Items" )
       .setMultiChoiceItems( items, _selections, new OnMultiChoiceClickListener(){public void onClick (DialogInterface dialog, int which, boolean isChecked){}} )
       .setPositiveButton("Smazat", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) { 
            dialog.dismiss(); 
            deleteRow(_selections);
            } })
        .setNegativeButton("Storno", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) { 
            dialog.dismiss(); 
            } })
       .create();

如何在onPrepareDialog中刷新值(items,_selections)? 我尝试使 View 无效,希望强制 android 再次加载项目(两者都不工作),但我认为它是错误的选择以及删除对话框和重新创建。

protected void onPrepareDialog(final int id, final Dialog dialog) {
          switch (id) {
          case REMOVE_DIALOG_ID:

              ListView lv = ((AlertDialog) dialog).getListView();
                lv.invalidateViews();

          break;
          }

感谢任何想法!

最佳答案

当您使用 AlertDialog.Builder 创建项目列表时,它会在内部获取并根据您传递的数据类型创建一个 ListAdapater。由于您的示例中的“项目”看起来不像资源 ID,因此我假设它是 CharSequence[] 或 Cursor。如果您提供有关“项目”是什么的更多信息,我可以提供一个更具体的示例。

  • 对于 CharSequence[](如 String[])数据,Builder 创建一个 ArrayAdapter 实例。
  • 对于 Cursor 数据,Builder 创建一个 CursorAdapter

您需要在 AlertDialog 实例上使用 getListView().getAdapter() 获取对此 ListAdapter 的引用。

对于 Cursor,您可以在调用 requery() 更新数据集后调用 notifyDataSetChanged()

因为你不能用新数据“更新”数组(改变指向新实例的指针不是一回事......适配器指向的实例保持不变),这种情况有点多工作。您将需要调用适配器的 add()clear() 等方法来删除无效项并添加更新项。适配器数据集完全更新后,您现在可以调用 notifyDataSetChanged()

希望对您有所帮助!

关于android - 如何在onPrepareDialog 中实现setMultiChoiceItems 项的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4984214/

相关文章:

android - 在 Android 上以编程方式获取 MPEG-4 视频流的配置文件

android - 在 CoordinatorLayout 的工具栏下方添加 View

c# - 从另一个对话框启动 FormFlow 对话框

java - 如何从带有资源的android库项目创建Jar文件?

java - android webrtc VideoCapturerAndroid 由于未设置 applicationContext 而崩溃

facebook - 如何使用 "new auth dialog"将选项卡应用程序添加到页面

java - 单击按钮时不显示对话框 - Android

android - 带有 Spinner + 方向更改的对话框

android - 带有 EditText 和 Spinner 的对话框

android - 在 android 中快速滚动时避免滑动刷新