MvxBind:错误:找不到视图类型 - BindableListView

时间:2015-05-06 12:23:57

标签: android xamarin mvvmcross mvxbind

我已经使用MvvmCross超过2年了,但是这个最新的Android问题已经被困扰了。我显然遗漏了一些东西。

我使用最新版本升级了我的Xamarin和MonoDevelop。我一直在使用Mvx热金枪鱼3.5并试图升级到3.5.1而没有不同的结果。基本上每个使用绑定的单个视图都会与MvxBind失败:输出窗口中的错误视图只是空白。

我也通过尝试手动提供程序集以及名称空间来改变安装程序类。我需要非常紧急地解决这个问题,Stuart请指教。

MvxBind:Error:100,93 View type not found - md52d382d08e2b5b5a41f8bed5ba30f5cc4.BindableListView

这方面的一个例子是我的配置视图中的绑定。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/style_background">
    <Monovage.BindableListView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:cacheColorHint="#00000000"
        local:MvxBind="ItemsSource Thresholds"
        local:MvxItemTemplate="@layout/listitem_usagethreshold"
        android:layout_marginTop="0dp" />
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerHorizontal="true"
        android:orientation="vertical"
        android:background="@drawable/style_background">
        <ProgressBar
            android:layout_width="45dp"
            android:layout_height="45dp"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="false"
            android:layout_centerInParent="true"
            local:MvxBind="Visibility IsBusy, Converter=Visibility" />
    </RelativeLayout>
</LinearLayout>

Bindable List View是一个继承自MvxListView

的列表视图

public class BindableListView:MvxListView

3 个答案:

答案 0 :(得分:7)

我昨天刚刚使用BindingFlowLayout处理了这个问题。我通过调整布局文件中的前缀来解决MvxBind:Error ...

<BindingFlowLayout
            android:id="@+id/AllShowsFlow"
            android:orientation="horizontal"
            local:MvxItemTemplate="@layout/appmoviesgriditem"
            local:MvxBind="ItemsSource TVShows"
            android:minWidth="25px"
            android:minHeight="25px"
            android:layout_marginLeft="20dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

并添加装配设置。

protected override IList<Assembly> AndroidViewAssemblies
    {
        get 
        {
            var assemblies = base.AndroidViewAssemblies;
            assemblies.Add(typeof(MvxExtensions.BindingFlowLayout).Assembly);
            assemblies.Add(typeof(MvxExtensions.FlowLayout).Assembly);
            return assemblies;
        }
    }

基于斯图亚特的答案:

MvxBind:Error: View type not found - mvvmemiextensions.EmiDatePicker

但是,这个错误在我的应用程序中是良性的,它从来没有造成任何问题。

答案 1 :(得分:5)

我遇到了同样的问题但是使用了BindableExpandableListView, 我收到了错误

[MvxBind] 237.25 View type not found - md58cb9ccb4af6afc62c0aa8757d7b275d0.BindableExpandableListView 

我在布局文件中有这个

<DeapExtensions.Binding.Droid.Views.BindableExpandableListView
        android:id="@+id/openExpandableListView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:drawSelectorOnTop="true"
        android:stackFromBottom="false"
        android:layout_marginLeft="15dp"
        android:layout_marginRight="15dp"
        android:layout_marginBottom="15dp"
        local:MvxBind="ItemsSource WrappedCategories"
        local:MvxItemTemplate="@layout/rowopentask"
        local:GroupItemTemplate="@layout/rowcategory" />

我刚刚删除了所有的前缀

<BindableExpandableListView
        android:id="@+id/openExpandableListView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:drawSelectorOnTop="true"
        android:stackFromBottom="false"
        android:layout_marginLeft="15dp"
        android:layout_marginRight="15dp"
        android:layout_marginBottom="15dp"
        local:MvxBind="ItemsSource WrappedCategories"
        local:MvxItemTemplate="@layout/rowopentask"
        local:GroupItemTemplate="@layout/rowcategory" />

这似乎有效。

答案 2 :(得分:0)

修复是因为MvvmCross不假设从C#到Java类型名称的1:1映射,以下代码片段可用于从C#类型获取基础Java类型名称:

string javaClassName = Java.Lang.Class.FromType(typeof(MyActivity));