Я использую MvxRecyclerView в моем фрагменте:Как связать с MvxRecyclerView ItemsSource через код?
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/Headline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="50dp"
android:text="My Headline" />
<MvvmCross.Droid.Support.V7.RecyclerView.MvxRecyclerView
android:id="@+id/RecyclerView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/Headline"
android:layout_marginTop="50dp" />
</RelativeLayout>
Это фрагмент кода:
[MvxFragment(typeof(MainViewModel), Resource.Id.Main_ViewPager)]
[Register("my.app.fragments.MyFragment")]
public class MyFragment : BaseFragment<MyViewModel>
{
private MvxRecyclerView recyclerView;
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
base.OnCreateView(inflater, container, savedInstanceState);
var view = this.BindingInflate(Resource.Layout.MyFragment, null);
this.recyclerView = view.FindViewById<MvxRecyclerView>(Resource.Id.RecyclerView);
this.recyclerView.ItemTemplateId = Resource.Layout.MyCell;
var set = this.CreateBindingSet<MyFragment, MyViewModel>();
set.Bind(this.recyclerView).For(x => x.ItemsSource).To(x => x.Items);
set.Apply();
return view;
}
}
И ViewModel:
public class MyViewModel : MvxViewModel
{
....
private ObservableCollection<T> items;
public ObservableCollection<T> Items
{
get { return this.items; }
set
{
this.items = value;
this.RaisePropertyChanged(() => this.Items);
}
}
....
}
Проблема заключается в том, что MvxRecyclerView делает не отображать никаких данных. Но это так, когда я определяю ItemTemplateId и Binding в axml (например, local: MvxItemTemplate = "...", local: MvxBind = "ItemsSource Items").
Моя цель - не определять его в axml. Я хочу воспользоваться преимуществами использования этих свойств в коде (например, переименование или рефакторинг).
Можно ли определить эти привязки в коде?
Не могли бы вы поделиться ViewModel? Код в вашем фрагменте кажется правильным. Может быть, вы не используете ObservableCollection? –
Pilatus
Я отредактировал вопрос и добавил интересную часть MyViewModel. Это ObservableCollection - на привязке iOS отлично работает с этой ViewModel. –
Есть ли предупреждения в выводе? – Pilatus