简体   繁体   English

在RecyclerView Cell元素上具有多种单击类型-Xamarin.Android

[英]Having Multiple Type of Click On RecyclerView Cell elements - Xamarin.Android

For having Click listner on a cell in RecyclerView in Xamarin.Android we have a general methode which is : 对于Xamarin.Android中RecyclerView中的单元格上的Click listner,我们有一个通用方法:

mAdapter.ItemClick += OnItemClick; // in OnCreate

and

void OnItemClick (object sender, int position)
        {
            // Display a toast that briefly shows the enumeration of the selected photo:
            int photoNum = position + 1;
            Toast.MakeText(this, "This is photo number " + photoNum, ToastLength.Short).Show();
        }

In ViewHolder we put this code : 在ViewHolder中,我们输入以下代码:

itemView.Click += (sender, e) => listener (base.LayoutPosition);

And in RecyclerView.Adapter we have : 在RecyclerView.Adapter中,我们有:

public event EventHandler<int> ItemClick;

with : 与:

// Raise an event when the item-click takes place:
        void OnClick (int position)
        {
            if (ItemClick != null)
                ItemClick (this, position);
        }

Everything works well, BUT IF I want to have more than one type of click on items in ViewHolder, how can I manage this? 一切正常,但是如果我想在ViewHolder中单击一种以上的项目,该如何管理呢?

For example, I want to define a click on Image which open an activity. 例如,我想定义一个单击Image的按钮以打开一个活动。 And if user click on TextView in the same ViewHolder, it does another action. 如果用户在同一ViewHolder中单击TextView,它将执行另一项操作。

Image = itemView.FindViewById<ImageView> (Resource.Id.imageView); 
Image.Click += (sender, e) => listener (base.LayoutPosition); 
Caption = itemView.FindViewById<TextView> (Resource.Id.textView); 
Caption.Click += ???

You can use an interface to handle this case. 您可以使用接口来处理这种情况。

I have post my project on github . 我已经在github上发布了我的项目。

Update: 更新:

You can use View 's setTag method to store the position. 您可以使用ViewsetTag方法存储位置。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM