gpt4 book ai didi

c# - 无需在 ViewModel 上使用 Java.Lang.Object 即可自动完成 MVVM 和 Java 转换

转载 作者:行者123 更新时间:2023-11-30 16:24:44 26 4
gpt4 key购买 nike

我在转换方面遇到了问题。首先,我将举例说明如何在 Monodroid 中为没有 MVVM 的自动完成自定义适配器:https://github.com/BitStab/Monodroid-Custom-Auto-Complete/blob/master/MonoAndroidApplication1/CustomerAdapter.cs

现在我将在 MVVMCross 中尝试这个,但要做到这一点,我必须通过 Java.Lang.Object 扩展我的 ViewModel。这会破坏它的便携性。我现在正在寻找解决方法,因为我不是 mvvm 专家,所以我需要帮助。

我开始在 mvvmCross Bindigs 中创建一些新类,您可以在这里找到它:https://github.com/BitStab/MvvmCross/tree/master/Cirrious/Cirrious.MvvmCross.Binding/Android/Views

我试图让它尽可能通用,但我需要一种方法来将我的个人 C# 对象转换为 Java.Lang.Object。有没有一种方法可以在不扩展我的 ViewModel 的情况下执行此操作?如果有人有其他想法,我很乐意获得灵感!

感谢您的帮助!

最佳答案

如果你想要可移植的代码,那么你当然不希望在你的 ViewModels 附近有任何 Java。

恐怕我无法真正遵循 CustomerAdapter 示例代码 - 您的过滤器和发布方法看起来不太正确。此外,我在执行我发现的大多数 Java 示例时遇到了一些问题 - 从我所看到的情况来看,我认为 AutoCompleteTextView 上的线程模型不是理想的 - 它阻塞线程的时间太长(恕我直言)。

但是,在对 Google Books API 示例进行一些修改之后,我创建了一个示例 - 请观看视频:

One Two Three

此示例在 MvvmCross 框架内使用新的 alpha 数据绑定(bind)自动完成类和适配器。可能这些类从未真正成为全职框架成员——在这种情况下,它们可以生活在某个外部库中。

基本功能在 3 个新属性上使用数据绑定(bind):

  • PartialText - 这是一个部分文本字符串 - 从 View 发送到 ViewModel
  • ItemsSource - 这是提供的 PartialText 可用的当前项目集 - 从 ViewModel 发送到 View
  • SelectedObject - 这是当前选中的项目 - 从 View 发送到 ViewModel

您可以在绑定(bind) xml 中看到这些设置:

<Mvx.MvxBindableAutoCompleteTextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
local:MvxItemTemplate="@layout/listitem_book"
local:MvxBind="{'Text':{'Path':'EnteredText','Mode':'TwoWay'},
'ItemsSource':{'Path':'AutoCompleteSuggestions'},
'PartialText':{'Path':'CurrentTextHint'},
'SelectedObject':{'Path':'CurrentBook'}}"
/>

请注意,由于 Android 线程模型,PartialText 中的每个更改都必须通过 ItemsSource 中最终发出的信号更改来满足 - 这应该是对象集合中的单个更改,而不是许多小更改。

此初始样本的代码位于:https://github.com/slodge/MvvmCross/tree/master/Sample%20-%20SimpleDialogBinding/SimpleBinding/DroidAutoComplete

请注意,此示例使用“简单绑定(bind)”而不是完整的 Mvx 框架,因此在 ViewModel 中需要考虑的线程稍微多一些。

绑定(bind) View 及其适配器不是简单的代码可遵循 - 绑定(bind)代码本质上相当抽象 - 但它们可以在以下位置找到:


如果您正在做任何与网络相关的事情,那么从长远来看,我相信实现一个新的自动完成 View 可能比现在使用内置在 Android 中的 View 更好!

关于c# - 无需在 ViewModel 上使用 Java.Lang.Object 即可自动完成 MVVM 和 Java 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10550829/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com