Mvvmcross:启动包含ListView的android对话框

Mvvmcross:启动包含ListView的android对话框,android,mvvm,dialog,xamarin,mvvmcross,Android,Mvvm,Dialog,Xamarin,Mvvmcross,首先,我要对Stuart Lodge这个令人敬畏的框架表示极大的敬意。与Xamarin的Visual Studio集成一起,这是我接触过的最高效的跨平台框架之一 我想要实现的是在单击按钮时启动一个包含可选ListView的对话框。当用户关闭此对话框时,我需要访问所选项目。在遵循MVVM范式的同时,是否有推荐的方法使用Mvvmcross对话框插件来实现这一点 我正在使用以下活动创建一个对话框 [Activity(Theme = "@android:style/Theme.Holo.Dialog")

首先,我要对Stuart Lodge这个令人敬畏的框架表示极大的敬意。与Xamarin的Visual Studio集成一起,这是我接触过的最高效的跨平台框架之一

我想要实现的是在单击按钮时启动一个包含可选ListView的对话框。当用户关闭此对话框时,我需要访问所选项目。在遵循MVVM范式的同时,是否有推荐的方法使用Mvvmcross对话框插件来实现这一点

我正在使用以下活动创建一个对话框

[Activity(Theme = "@android:style/Theme.Holo.Dialog")]
    public class SearchResultDialogView : MvxActivity
    {
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            SetContentView(Resource.Layout.SearchResultView);
        }
    }
从另一个视图模型导航到
SearchResultDialogViewModel
,将此视图显示为模态视图。看来我正朝着正确的方向前进。但是,对话框缺少OK和Cancel按钮,我还想去掉默认的标题。我想我需要一个AlertDialog,但到目前为止,我还没有成功地使用以下代码启动一个:

 [Activity(Theme = "@android:style/Theme.NoTitleBar")]
    public class SearchResultDialogView : MvxActivity
    {
        protected override Dialog OnCreateDialog(int id, Bundle args)
        {
             AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.SetTitle("some title");
            return builder.Create();
        }
    }
如果这个问题含糊不清,我道歉。我是Android UI开发的新手


TIA。

您可以使用构建器来完成

代码是:

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setTitle(R.string.pick_color);
           .setItems(R.array.colors_array, new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int which) {
               // The 'which' argument contains the index position
               // of the selected item
           }
    });
    return builder.create();
}

您可以通过将
which
值返回给调用者来获取元素。

这里的dialog这个词有几种不同的用法

  • Android对话框是“弹出式显示”,包含在
  • MvvmCross对话框插件是一个基于代码的表单生成器,由现有的MonoDroid.Dialog和MonoTouch.Dialog工具派生而来-请参阅
  • Holo对话框的显示(实际上我不确定)是基于正常
    活动
    的主题皮肤
考虑到这些

如果您想显示一个通用弹出窗口来收集一些数据,那么您可以尝试使用基于片段的对话框来收集数据-这在中进行了演示(后面有一点代码)-对于片段的通用背景,请在中查看N=26

如果您想使用单独的活动进行数据收集,那么@gschackles写了这篇文章,讨论了从子视图模型返回数据的一种方法——我相信也可以使用其他方案


如果您确实想了解Mvx对话框插件,请参阅《谢谢斯图尔特》中的N=23。我们将研究这些替代方案。同样,您的框架是一流的。看起来这类似于我在上面所做的,尽管我没有填充对话框的内容区域。