android - ExpandableListView 的 ItemTemplate 内 MvxLinearLayout 上的 InflateException

标签 android xamarin.android mvvmcross

我有一个自定义的 BindableExpandableListView,它根据项目的类型使用不同的 ItemTemplates。 当我现在有一个应该使用包含 MvxBindableLinearLayout 的布局的项目时,它会抛出一个

Android.Views.InflateException: Loading...

指向 MvxAdapter 的 GetBindableView 方法的异常。

错误:

[0:] 
MvxBind:Error: 35,20 View type not found - Mvx.MvxBindableLinearLayout
[0:] MvxBind:Error: 35,20 View type not found - Mvx.MvxBindableLinearLayout
03-28 11:25:37.508 I/mono-stdout( 4758): MvxBind:Error: 35,20 View type not found - Mvx.MvxBindableLinearLayout
An unhandled exception occured.
03-28 11:25:43.248 I/dalvikvm( 4758): threadid=3: reacting to signal 3
03-28 11:25:43.278 I/dalvikvm( 4758): Wrote stack traces to '/data/anr/traces.txt'
03-28 11:25:47.398 I/MonoDroid( 4758): UNHANDLED EXCEPTION: Android.Views.InflateException: Exception of type 'Android.Views.InflateException' was thrown.
03-28 11:25:47.398 I/MonoDroid( 4758): at Android.Runtime.JNIEnv.CallObjectMethod (intptr,intptr,Android.Runtime.JValue[]) [0x00064] in /Users/builder/data/lanes/monodroid-mlion-monodroid-4.12-series/a1e3982a/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.g.cs:194
03-28 11:25:47.398 I/MonoDroid( 4758): at Android.Views.LayoutInflater.Inflate (int,Android.Views.ViewGroup,bool) [0x00043] in /Users/builder/data/lanes/monodroid-mlion-monodroid-4.12-series/a1e3982a/source/monodroid/src/Mono.Android/platforms/android-8/src/generated/Android.Views.LayoutInflater.cs:468
In mgmain JNI_OnLoad
03-28 11:25:47.398 I/MonoDroid( 4758): at Cirrious.MvvmCross.Binding.Droid.BindingContext.MvxAndroidBindingContext.CommonInflate (int,Android.Views.ViewGroup,Cirrious.MvvmCross.Binding.Droid.Binders.IMvxLayoutInfactorFactory,bool) <IL 0x00046, 0x00287>
03-28 11:25:47.398 I/MonoDroid( 4758): at Cirrious.MvvmCross.Binding.Droid.BindingContext.MvxAndroidBindingContext.BindingInflate (int,Android.Views.ViewGroup,bool) <IL 0x00015, 0x00107>
03-28 11:25:47.398 I/MonoDroid( 4758): at Cirrious.MvvmCross.Binding.Droid.BindingContext.MvxAndroidBindingContext.BindingInflate (int,Android.Views.ViewGroup) <IL 0x00004, 0x00063>
03-28 11:25:47.398 I/MonoDroid( 4758): at Cirrious.MvvmCross.Binding.Droid.Views.MvxListItemView..ctor (Android.Content.Context,Cirrious.MvvmCross.Binding.Droid.Views.IMvxLayoutInflater,object,int) <IL 0x0001a, 0x000cf>
03-28 11:25:47.398 I/MonoDroid( 4758): at Cirrious.MvvmCross.Binding.Droid.Views.MvxAdapter.CreateBindableView (object,int) <IL 0x00013, 0x000bb>
Unhandled Exception:

Android.Views.InflateException: Loading...
03-28 11:25:47.398 I/MonoDroid( 4758): at Cirrious.MvvmCross.Binding.Droid.Views.MvxAdapter.GetBindableView (Android.Views.View,object,int) <IL 0x00027, 0x0027b>
The program 'Mono' has exited with code 0 (0x0).

我的布局:
包含部分的可扩展列表:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:minWidth="25px"
    android:minHeight="25px"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <BindableExpandableListView
        android:descendantFocusability="blocksDescendants"
        android:minWidth="25px"
        android:minHeight="25px"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/EventList"
        android:groupIndicator="@null"
        android:dividerHeight="1px"
        android:divider="#cccccc"
        android:fadingEdgeLength="0px"
        local:MvxBind="ItemsSource Sections; ItemClick ItemSelectedCommand; ItemLongClick ItemLongClickCommand"
        local:GroupItemTemplate="@layout/eventlistitem_header" />
</LinearLayout>

有问题的项目的项目模板:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <TextView
        android:layout_width="fill_parent"
        android:id="@+id/txt_myEventTitle"
        android:textSize="8pt"
        android:textColor="#000000"
        android:gravity="center_vertical"
        android:layout_height="wrap_content"
        android:paddingLeft="12dip"
        android:paddingTop="12dip"
        android:paddingBottom="12dip"
        android:background="#ffffff"
        local:MvxBind="Text Title" />
    <Mvx.MvxBindableLinearLayout
        android:layout_width="fill_parent"
        android:orientation="vertical"
        android:id="@+id/list_EventDetail_Ranking"
        android:layout_height="wrap_content"
        local:MvxBind="ItemsSource Ranking"
        local:MvxItemTemplate="@layout/eventlistsubitem_rank" />
</LinearLayout>

BindableLinearLayout 的项目模板:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/linearLayout1">
    <LinearLayout
        android:orientation="horizontal"
        android:minWidth="25px"
        android:minHeight="25px"
        android:id="@+id/linearLayout1"
        android:layout_width="fill_parent"
        android:layout_height="22dip">
        <TextView
            android:text="1."
            android:layout_width="0dp"
            android:layout_weight="0.1"
            android:textSize="6.5pt"
            android:textColor="#666666"
            android:gravity="center_vertical"
            android:layout_height="match_parent"
            android:paddingLeft="12dip"
            android:background="#ffffff"
            local:MvxBind="Text Rank" />
        <TextView
            android:text="Krasser Typ"
            android:layout_width="0dp"
            android:layout_weight="0.65"
            android:textSize="6.5pt"
            android:textColor="#666666"
            android:gravity="center_vertical"
            android:layout_height="match_parent"
            android:background="#ffffff"
            local:MvxBind="Text Player" />
        <TextView
            android:text="0"
            android:layout_width="0dp"
            android:layout_weight="0.25"
            android:layout_height="fill_parent"
            android:textSize="6.5pt"
            android:textColor="#000000"
            android:background="#ebebeb"
            android:gravity="center_vertical"
            android:paddingLeft="12dip"
            android:textStyle="bold"
            local:MvxBind="Text Mark" />
    </LinearLayout>
</LinearLayout>

以及在BindableExpandableListViewAdapter中调用MvxAdapter的GetBindableView方法的方法:

    public View GetChildView(int groupPosition, int childPosition, bool isLastChild, View convertView,
        ViewGroup parent)
    {
        var sublist = ((_itemsSource[groupPosition]) as SectionModel).Events.ToList();

        var item = sublist[childPosition];

        // Item Template depends on Datatype
        if (item is EventListModel1)
            ItemTemplateId = Resource.Layout.eventlistitem_event1;
        else if (item is EventListModel2)
            ItemTemplateId = Resource.Layout.eventlistitem_event2;
        else if (item is EventListModel3)
            ItemTemplateId = Resource.Layout.eventlistitem_event3;
        else if (item is RankEventModel)
            ItemTemplateId = Resource.Layout.eventlistitem_rank;
        else
            ItemTemplateId = Resource.Layout.eventlistitem_null;

        return base.GetBindableView(convertView, item, ItemTemplateId);
    }

所以基本上我需要的是一个包含以下内容的可扩展列表:
级别 1(动态包含部分)
-- 级别 2(动态包含针对不同事件具有不同布局的事件)
--- 级别 3(仅特定事件类型需要包含具有动态条目数量的排名表)

最佳答案

错误是“未找到 View 类型 - Mvx.MvxBindableLinearLayout”

这看起来像是您使用的是非常旧的代码? MvxBindableLinearLayout 是一个 vNext 类。在 v3 中,我们简化了命名 - 因此使用了像 MvxLinearLayout 这样的名称。

关于android - ExpandableListView 的 ItemTemplate 内 MvxLinearLayout 上的 InflateException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22711025/

相关文章:

java - 如何正确地将字符&放入android中的xml中

android - android中spanableString的背景颜色

xamarin - MVVM Cross ShowViewModel 不适用于具有自定义功能的 UWP

android - Android Q 中的 Landroid/view/LayoutInflater 类中没有字段 mConstructorArgs

android - 如何在 native Android 应用程序中获取显示指标

android - Monodroid滑动菜单

xaml - 在Xamarin Forms中自动读取SMS激活码,而不是由用户手动键入

android - 如何停止在android中显示黑屏?

android - Mvvmcross:框架布局在 Activity 后不显示 fragment

android - 更改最低 SDK 版本时,ViewPager 在同一设备上运行速度变慢