如何使用Xamarin.Android ListView和定制的ListView布局正确实现ReactiveUI ReactiveList

如何使用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

我正在将Xamarin.Android与ReactiveUI一起使用,并试图用ReactiveUI实现一个自定义列表视图

是否有任何方法可以将数据绑定到自定义实现的控件,例如列表视图中的EditText、TextView,就像通过ListView采纳器和设置onClickListner进行充气一样

我见过一些示例和文档较少的概念,如
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中,两者在行为上非常接近