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



首先,我要为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会将此视图显示为模态视图。所以看起来我正朝着正确的方向前进。但是,对话框缺少"确定"one_answers"取消"按钮,我也希望去掉默认的标题。我想我需要一个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();
        }
    }

如果这个问题含糊不清,我深表歉意。我是安卓用户界面开发的新手。

TIA。

对话框这个词有几种不同的用法。

  • Android对话框是"弹出显示",在http://blog.ostebaronen.dk/2013/02/using-dialogs-in-mono-for-android.html
  • MvvvmCross-Dialog插件是从现有的MonoDroid.Dialog和MonoTouch.Dialog工具派生而来的基于代码的表单生成器-请参阅https://github.com/migueldeicaza/MonoTouch.Dialog
  • Holo对话框的显示(实际上我不确定)是基于普通Activity的一些主题皮肤

考虑到这些。。。

如果你想显示一个通用的弹出窗口来收集一些数据,那么你可以尝试使用基于片段的对话框来收集数据-这在Fragments HomeView.cs with NameDialogFragment.cs中进行了演示(后面有一点代码)-有关片段的一般背景,请观看http://mvvmcross.wordpress.com/

如果你想使用一个单独的活动来收集数据,那么@gschackles写了这篇关于从子视图模型返回数据的方法的文章http://www.gregshackles.com/2012/11/returning-results-from-view-models-in-mvvmcross/-我相信其他方案也可以使用。

如果您确实想了解Mvx对话框插件,请参阅中的N=23http://mvvmcross.wordpress.com/

您可以使用生成器来完成。

http://developer.android.com/guide/topics/ui/dialogs.html#AddingAList

代码为:

@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值返回给调用者来获取元素。

最新更新