RecyclerView没有项目点击和其他事件

时间:2016-09-03 21:40:54

标签: c# android events xamarin

之前我使用过ListView,这个课程中有很多事件,但现在我开始使用RecyclerView,在这里我找不到任何事件。

例如:

RecyclerView mView = FindViewById<RecyclerView>(Resource.Id.recyclerView);
mView.ItemClick += delegate {
// action
};

不使用此类 - RecyclerView。

实际上我想要的这些事件存在于RecyclerView.Adapter中,所以我尝试了这个:

public class ListItemArgs : EventArgs
{
    public int itemPosition;

    public ListItemArgs(int pos)
    {
        itemPosition = pos;
    }
}

public class MyAdapter : RecyclerView.Adapter
{
    public event EventHandler<ListItemArgs> OnItemLongClick;

    // some overrides skipped (not needed anyway)

    public class MyView : RecyclerView.ViewHolder
    {
        public View mMainView { get; set; }
        public TextView mName { get; set; } 
        public TextView mEventCount { get; set; } 
        public CheckBox mFavorite { get; set; }

        public MyView(View view) : base(view)
        {
            mMainView = view;
        }
    }

    public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
    {
        MyView mHolder = holder as MyView;

        mHolder.mMainView.LongClick += delegate
        {
            Snackbar.Make(mRecyclerView, "Ar tikrai norite trinti pasirinkimą?", Snackbar.LengthLong).Show();
            OnItemLongClick.Invoke(mHolder.mMainView, new ListItemArgs(position));
        };
    }
}

和其他类中的声明:

RecyclerView mView = FindViewById<RecyclerView>(Resource.Id.recyclerView);
RecyclerView.Adapter mAdapter new AddNewDayAdapter(mView);
  

现在我应该能够从mAdapter对象启动此事件,我将SetAdapter用于RecyclerView。 (以下代码)

mAdapter.OnItemLongClick += (object sender, ListItemArgs e) =>
{
    // action
}
mView.SetAdapter(mAdapter);
  

mAdapter.OnItemLongClick无效。

主要问题:如何获得args可以查看行和所选项目位置的事件?

0 个答案:

没有答案