c# - 具有多种类型的单击 RecyclerView 单元格元素 - Xamarin.Android

标签 c# android android-recyclerview xamarin.android click

为了在 Xamarin.Android 中的 RecyclerView 中的单元格上使用 Click listner,我们有一个通用的方法是:

mAdapter.ItemClick += OnItemClick; // in OnCreate

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();
        }

在 ViewHolder 中我们放置了这段代码:

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

在 RecyclerView.Adapter 中我们有:

public event EventHandler<int> ItemClick;

与:

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

一切正常,但如果我想对 ViewHolder 中的项目进行不止一种类型的点击,我该如何管理呢?

例如,我想定义一个打开 Activity 的图像点击。如果用户在同一个 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 += ???

最佳答案

您可以使用接口(interface)来处理这种情况。

我已经在 github 上发布了我的项目.

更新:

您可以使用ViewsetTag存储位置的方法。

关于c# - 具有多种类型的单击 RecyclerView 单元格元素 - Xamarin.Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49737293/

相关文章:

android - 如何以及在哪里进行 Retrofit 调用?

c# - 关于继承 C#

c# - 使用 Paypal API/SDK,我将如何检查某个订阅 ID? C#

c# - 将 JSON 字符串转换为 C# 字典

java - 如何在android中绘制声音

java - 使用recyclerview从fragment中的firebase获取数据

c# - IBMMQDotnet 客户端重试机制

android - 确定哪个 fragment 当前在 ViewPager 中可见

android - 为什么不显示自定义注释?

java - Android RecyclerView - onBindViewHolder 中的 IndexOutOfBounds 异常