Xamarin ReactiveRecyclServiceAdapter不响应更改
我正试图使用ReactiveRecyclServiceAdapter根据ViewModel上的SourceList更新我的RecycleView,但是关于这方面的文档并不多,但我不应该是唯一一个在这方面苦苦挣扎的人 视图模型:Xamarin ReactiveRecyclServiceAdapter不响应更改,xamarin,xamarin.android,dynamic-data,reactiveui,Xamarin,Xamarin.android,Dynamic Data,Reactiveui,我正试图使用ReactiveRecyclServiceAdapter根据ViewModel上的SourceList更新我的RecycleView,但是关于这方面的文档并不多,但我不应该是唯一一个在这方面苦苦挣扎的人 视图模型: public class PassportScreenViewModel : ReactiveObject { readonly IAccountService _accountService; public PassportScreenViewMod
public class PassportScreenViewModel : ReactiveObject
{
readonly IAccountService _accountService;
public PassportScreenViewModel(IAccountService accountService = null)
{
_accountService = accountService ?? Locator.Current.GetService<IAccountService>();
SchoolChoices = new SourceList<SchoolDataModel>();
SchoolChoices.Add(new SchoolDataModel(new SchoolChoice() { Name = "My simple test" }));
SchoolChoices.Add(new SchoolDataModel(new SchoolChoice() { Name = "My simple tes 2" }));
AddSchoolCommand = ReactiveCommand.Create(() => {
SchoolChoices.Edit(x => x.Add(new SchoolDataModel(new SchoolChoice() { Name = "My simple test " + SchoolChoices.Count })));
});
}
[Reactive] public string Headline { get; set; }
[Reactive] public string Title { get; set; }
[Reactive] public string Company { get; set; }
[Reactive] public SourceList<SchoolDataModel> SchoolChoices { get; set; }
public ReactiveCommand AddSchoolCommand { get; set; }
}
和我的适配器:
public class SchoolReactiveAdapter : ReactiveRecyclerViewAdapter<SchoolDataModel>
{
public SchoolReactiveAdapter(IObservable<IChangeSet<SchoolDataModel>> backingList) : base(backingList)
{
}
public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType)
{
var itemView = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.item_school, parent, false);
return new MySchoolViewHolder(itemView);
}
public class MySchoolViewHolder : ReactiveRecyclerViewViewHolder<SchoolDataModel>
{
[WireUpResource("textview_schoolitem_name")]
public TextView SchoolName { get; private set; }
public MySchoolViewHolder(View view) : base(view)
{
this.WireUpControls();
this.Bind(ViewModel, vm => vm.Name, v => v.SchoolName.Text);
}
}
}
这将交换适配器并显示新项,但我认为适配器应该在我连接()时对ViewModel中的变更集作出反应
即使List get是一个新项目,RecyclerView也不会得到更新。没有关于如何使用ReactiveUI完全设置绑定的RecyclerView的文档,至少我找不到它,你们有人可以帮我吗
谢谢我也有同样的问题,你解决了吗?
public class SchoolReactiveAdapter : ReactiveRecyclerViewAdapter<SchoolDataModel>
{
public SchoolReactiveAdapter(IObservable<IChangeSet<SchoolDataModel>> backingList) : base(backingList)
{
}
public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType)
{
var itemView = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.item_school, parent, false);
return new MySchoolViewHolder(itemView);
}
public class MySchoolViewHolder : ReactiveRecyclerViewViewHolder<SchoolDataModel>
{
[WireUpResource("textview_schoolitem_name")]
public TextView SchoolName { get; private set; }
public MySchoolViewHolder(View view) : base(view)
{
this.WireUpControls();
this.Bind(ViewModel, vm => vm.Name, v => v.SchoolName.Text);
}
}
}
ViewModel.SchoolChoices.Connect().Subscribe(x =>
{
//adapter = new SchoolReactiveAdapter(ViewModel.SchoolChoices.Connect());
//SchoolsRecycler.SwapAdapter(adapter, true);
});
var adapter = new SchoolReactiveAdapter(ViewModel.SchoolChoices.Connect());