Xamarin 表单中列表视图的粘性标签 (header)

Sticky label (header) of listview in Xamarin forms

如何在 Xamarin 跨平台的列表视图中创建粘性 header?我有一个已排序 objects 的列表,我想在滚动时创建粘性 header。

有 GitHub 代码,您可以找到 here

对于iOS,这是本机行为

Android 渲染器如下:

public class CustomListViewRenderer : ViewRenderer<CustomListView, Android.Views.View>
{
    Dictionary<string, int> mapIndex;
    StickyListHeadersListView SlistView;

    protected override void OnElementChanged(ElementChangedEventArgs<CustomListView> e)
    {
        base.OnElementChanged(e);
        LayoutInflater inflater = (LayoutInflater)Context.GetSystemService(Context.LayoutInflaterService);

        Android.Views.View v = inflater.Inflate(Resource.Layout.customListView, null, false);

        //this.AddView(v);

        if (Control == null)
        {
            SlistView = v.FindViewById<StickyListHeadersListView>(Resource.Id.list_employee);
            SetNativeControl(v);

        }
        if (e.OldElement != null)
        {
            // unsubscribe
            //Control.ItemClick -= OnItemClick;
        }

        if (e.NewElement != null)
        {
            // subscribe
            SlistView.Adapter = new CustomListViewAdapter(Forms.Context as Android.App.Activity, e.NewElement as CustomListView);
        }
    }

    protected override void OnElementPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
    {
        //base.OnElementPropertyChanged(sender, e);
    }

    void OnItemClick(object sender, Android.Widget.AdapterView.ItemClickEventArgs e)
    {
        //((CustomListView)Element).NotifyItemSelected(((CustomListView)Element).Items.ToList()[e.Position - 1]);
    }
}

祝你好运,如有问题,请随时回复。