C# Xamarin:让MvxRecyclerView工作

C# Xamarin:让MvxRecyclerView工作,c#,android,android-recyclerview,mvvmcross,C#,Android,Android Recyclerview,Mvvmcross,我正在与Xamarin和MvvmCross一起开发一款不错的Android应用程序。我正试图让MvxRecyclerView正常工作,但我做不好。应用程序运行,但在RecycleView中不显示任何内容 这是我创建的视图(MainView.axml): 我创建的ViewModel(MainViewModel.cs): public类主视图模型:MvxViewModel { #区域属性 公共可观测集合测试项{get;set;} #端区 公共主视图模型() { TestItems=新的可观察集合

我正在与Xamarin和MvvmCross一起开发一款不错的Android应用程序。我正试图让
MvxRecyclerView
正常工作,但我做不好。应用程序运行,但在
RecycleView
中不显示任何内容

这是我创建的视图(MainView.axml):


我创建的ViewModel(MainViewModel.cs):

public类主视图模型:MvxViewModel
{
#区域属性
公共可观测集合测试项{get;set;}
#端区
公共主视图模型()
{
TestItems=新的可观察集合
{
新的TestModel()
{
Name=“Test1”
},
新的TestModel()
{
Name=“Test2”
}
};
}
公共覆盖任务初始化()
{
//TODO:在此处添加启动逻辑
返回base.Initialize();
}
}
itemview(itemview.cs):


正如您在示例中所看到的,这是一个简单的方法,但我无法让它工作。


这里有两个不同的问题:

  • ItemTemplate
    的宽度是
    0dp
    ,因此它不会渲染。将其更改为
    match\u parent
    。我看到您正试图使用
    布局\u权重
    ,但要实现这一点,父级
    线性布局
    需要
    权重总和

  • 您的
    TextView
    未绑定到模型中的
    Name
    值。将
    local:MvxBind=“Text Name”
    添加到
    TextView

  • 进行这两项更改后,您应该可以看到您的
    RecyclerView
    所期望的方式:


    它可以工作。还有一个小问题:为什么我需要android:text=“Name”和local:MvxBind=“text Name”。因为当我省略了android:text属性时,它就停止工作了。我不能不看一眼就说,但是如果没有
    android:text
    ,它应该可以工作。非常奇怪。@LukePorthier我更新了github,如果你有时间的话,你可以看看:)
    <?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:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <MvvmCross.Droid.Support.V7.RecyclerView.MvxRecyclerView
            android:id="@+id/rvItems"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="match_parent"
            local:MvxItemTemplate="@layout/itemview"
            local:MvxBind="ItemsSource TestItems" />
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Add" />
    </LinearLayout>
    
    public class MainViewModel : MvxViewModel
    {
        #region Properties
    
        public ObservableCollection<TestModel> TestItems { get; set; }
    
        #endregion
    
        public MainViewModel()
        {
            TestItems = new ObservableCollection<TestModel>
            {
                new TestModel()
                {
                    Name = "Test1"
                },
                new TestModel()
                {
                    Name = "Test2"
                }
            };
        }
    
        public override Task Initialize()
        {
            //TODO: Add starting logic here
    
            return base.Initialize();
        }
    }
    
    <?xml version="1.0" encoding="utf-8"?>
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:local="http://scehmas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Name" />