大佬教程收集整理的这篇文章主要介绍了如何使用MvvmCross流畅的API将RecyclerView项目的TextView绑定到Android上ViewModel的属性?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
<MvxRecyclerView android:id="@+id/my_recycler_view" local:MvxItemTemplate="@layout/item_recycler_view" />
viewmodel非常简单,它只包含一个属性,用于保存要在RecyclerView中显示的数据:
public class Mainviewmodel : Mvxviewmodel { private IEnumerable<viewmodelItem> _viewmodelItems; public IEnumerable<viewmodelItem> viewmodelItems { get { return _viewmodelItems; } set { SetProperty(ref _viewmodelItems,value); } } }
通常,我喜欢尽可能多地使用MvvmCross流畅的API,因为隐式重构支持.
所以在我的活动中,我绑定了MvxRecyclerView的属性,如下所示:
var recyclerView = View.FindViewById<MvxRecyclerView>(resource.Id.my_recycler_view); var set = this.CreateBindingSet<MainView,Mainviewmodel>(); set.bind(recyclerView) .For(v => v.ItemssourcE) .To(vm => vm.viewmodelItems); set.Apply();
到现在为止还挺好.现在,项模板的布局文件基本上只包含一个TextView:
<LinearLayout> <TextView android:id="@+id/innerText" /> </LinearLayout>
public class viewmodelItem { public String title { get; set; } }
我现在的问题是,如何以及在何处使用流畅的API将TextView.Text属性绑定到viewmodelItem.title属性?
public class MyAdapter : MvxRecyclerAdapter { public MyAdapter(IMvxAndroidBindingContext bindingContext) : base(bindingContext) { } public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent,int viewTypE) { var itemBindingContext = new MvxAndroidBindingContext(parent.Context,this.bindingContext.LayoutInflaterHolder); var view = this.InflateViewForHolder(parent,viewType,itemBindingContext); return new MyViewHolder(view,itemBindingContext); } }
在此ViewHolder中,您可以使用Fluent API进行绑定.
public class MyViewHolder : MvxRecyclerViewHolder { private readonly TextView textView; public MyViewHolder(View itemView,IMvxAndroidBindingContext context) : base(itemView,context) { this.textView = itemView.FindViewById<TextView>(Android.resource.Id.Text1); this.DelayBind(() => { var set = this.CreateBindingSet<MyViewHolder,viewmodelItem>(); set.bind(this.textView).To(x => x.titlE); set.Apply(); }); } }
在您的Activity中创建适配器并将其添加到RecyclerView:
var adapter = new MyAdapter((IMvxAndroidBindingContext)this.bindingContext); recyclerView.Adapter = adapter;
并将您的项目绑定到您的适配器的Itemssource:
set.bind(this.adapter).For(x => x.ItemssourcE).To(x => x.viewmodelItems);
以上是大佬教程为你收集整理的如何使用MvvmCross流畅的API将RecyclerView项目的TextView绑定到Android上ViewModel的属性?全部内容,希望文章能够帮你解决如何使用MvvmCross流畅的API将RecyclerView项目的TextView绑定到Android上ViewModel的属性?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。