如何使用Xamarin.Android ListView和定制的ListView布局正确实现ReactiveUI ReactiveList
我正在将Xamarin.Android与ReactiveUI一起使用,并试图用ReactiveUI实现一个自定义列表视图 是否有任何方法可以将数据绑定到自定义实现的控件,例如列表视图中的EditText、TextView,就像通过ListView采纳器和设置onClickListner进行充气一样 我见过一些示例和文档较少的概念,如如何使用Xamarin.Android ListView和定制的ListView布局正确实现ReactiveUI ReactiveList,listview,xamarin.android,reactiveui,Listview,Xamarin.android,Reactiveui,我正在将Xamarin.Android与ReactiveUI一起使用,并试图用ReactiveUI实现一个自定义列表视图 是否有任何方法可以将数据绑定到自定义实现的控件,例如列表视图中的EditText、TextView,就像通过ListView采纳器和设置onClickListner进行充气一样 我见过一些示例和文档较少的概念,如reactivelistapter可以使用它吗 采用者 public class OutletScreenAdopter : BaseAdapter<Outle
reactivelistapter
可以使用它吗
采用者
public class OutletScreenAdopter : BaseAdapter<OutletModel>
{
List<OutletModel> items;
Activity context;
public OutletScreenAdopter(Activity context, List<OutletModel> items) : base()
{
this.context = context;
this.items = items;
}
public override long GetItemId(int position)
{
return position;
}
public override OutletModel this[int position]
{
get { return items[position]; }
}
public override int Count
{
get { return items.Count; }
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
var item = items[position];
View view = convertView;
if (view == null) // no view to re-use, create new
view = context.LayoutInflater.Inflate(Resource.Layout.ViewCell_OutletBasic, null);
view.FindViewById<TextView>(Resource.Id.ViewCellOutletTxtOutletTitle).Text = item.OutletName;
view.FindViewById<TextView>(Resource.Id.ViewCellOutletTxtOutletCode).Text = item.OutletCode;
return view;
}
}
公共类OutletScreenAdapter:BaseAdapter
{
清单项目;
活动语境;
public OutletScreenAdapter(活动上下文,列表项):base()
{
this.context=上下文;
这个项目=项目;
}
公共覆盖长GetItemId(int位置)
{
返回位置;
}
公共覆盖OutletModel此[int位置]
{
获取{返回项目[位置];}
}
公共覆盖整数计数
{
获取{return items.Count;}
}
公共覆盖视图GetView(int位置、视图转换视图、视图组父视图)
{
var项目=项目[位置];
视图=转换视图;
如果(view==null)//没有要重用的视图,则创建新的
view=context.LayoutInflater.Inflate(Resource.Layout.ViewCell\u OutletBasic,null);
view.FindViewById(Resource.Id.ViewCellOutletTxtOutletTitle).Text=item.OutletName;
view.FindViewById(Resource.Id.ViewCellOutletTxtOutletCode).Text=item.OutletCode;
返回视图;
}
}
主要活动
ReactiveList<OutletListResult> OutletListItems;
public ListView OutletListViewMain { get; private set; }
....
public void SetupReactiveLists(Activity context)
{
List<OutletModel> items = new List<OutletModel>();
foreach (var item in OutletListItems)
{
OutletModel outlet = new OutletModel
{
OutletName = item.OutletName,
OutletCode = item.OutletCode
};
items.Add(outlet);
}
OutletListViewMain.Adapter = new OutletScreenAdopter(context, items);
}
ReactiveList OutletListItems;
公共ListView OutletListViewMain{get;private set;}
....
公共无效设置反应列表(活动上下文)
{
列表项=新列表();
foreach(OutletListItems中的变量项)
{
OutletModel outlet=新的OutletModel
{
OutletName=item.OutletName,
OutletCode=item.OutletCode
};
项目。添加(出口);
}
适配器=新的OutletScreenAdapter(上下文、项);
}
在我看来,您应该使用RecyclerView而不是ListView。在这种情况下,适配器可以订阅ItemChanged以添加/删除/移动列表中的项目
我做了一些可以重用的东西:在我看来,你应该使用RecyclerView而不是ListView。在这种情况下,适配器可以订阅ItemChanged以添加/删除/移动列表中的项目
我研究了一些可以重用的东西:我今天在这里分享了一个例子: 您可以使用
ReactiveListAdapter
并在构造函数中提供项目和视图创建委托。就这些
但正如Julien Mialon所说,从性能和可用性角度来看,最好切换到回收视图。我今天在这里分享了一个示例: 您可以使用
ReactiveListAdapter
并在构造函数中提供项目和视图创建委托。就这些
但正如Julien Mialon所说,从性能和可用性角度来看,最好切换到RecyclerView。是否有使用任何RxUI采纳者或RxUI概念的ListView实现?ListView的性能确实很差,当您有许多元素时,因此它们没有被广泛使用,因为RecyclerView是可用的。我想这就是为什么在用于ListView的ReactiveUI中没有内置适配器的原因。但如果您真的想使用ListView,我认为您可以轻松地将RecyclerView适配器适配为在ListView中使用,两者在行为主义方面都非常接近。ListView有一个使用任何RxUI采纳器或RxUI概念的实现吗?ListView在有许多元素时性能很差,因此它们没有得到广泛使用,因为RecyclerView是可用的。我想这就是为什么在用于ListView的ReactiveUI中没有内置适配器的原因。但如果您真的想使用ListView,我认为您可以很容易地将RecyclerView适配器适配到ListView中,两者在行为上非常接近