为什么我的 RecyclerView 没有响应我的自定义 Click-Event?

士力架

我正在使用本教程。

我正在使用没有表单的 API 27 和 Xamarin Android。

a 的基本用法RecyclerView已在本教程的上一步中说明,下一步是通过 Click-Handlers 扩展示例。

我用这段代码扩展了我的适配器public event EventHandler<int> ItemClick;并创建了一个回调函数,如下所示:

void OnItemClick (object sender, int position)
{
    Console.WriteLine("I've done it!");
}

并将其添加到适配器中,如下所示:

mAdapter = new CustomObjectAdapter(mCustomObject);
mAdapter.ItemClick += OnItemClick;

一旦应用程序出现,我就在Console.WriteLine-Part上设置了一个 Breckpoint并触摸/单击显示的图像。但事件不会触发。

这是我的适配器类:

class ModuleClassContainerAdapter : RecyclerView.Adapter
    {
        public event EventHandler<int> ItemClick;
        public ModuleClassContainer mModuleClassContainer;

        public ModuleClassContainerAdapter(ModuleClassContainer moduleClassContainer)
        {
            mModuleClassContainer = moduleClassContainer;
        }

        public override int ItemCount
        {
            get { return mModuleClassContainer.NumModules; }
        }

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

            var imageBitmap = BitmapFactory.DecodeByteArray(mModuleClassContainer[position].ImageBytes, 0, mModuleClassContainer[position].ImageBytes.Length);

            // Load the photo image resource from the photo album:
            vh.Image.SetImageBitmap(imageBitmap);

            // Load the photo caption from the photo album:
            vh.Caption.Text = mModuleClassContainer[position].ModuleName;
        }

        public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType)
        {
            // Inflate the CardView for the photo:
            View itemView = LayoutInflater.From(parent.Context).
                        Inflate(Resource.Layout.ModuleCardView, parent, false);

            // Create a ViewHolder to hold view references inside the CardView:
            ModuleViewHolder vh = new ModuleViewHolder(itemView);
            return vh;
        }
    }

这就是我设置适配器的方式:

private void SetupView()
        {
            RunOnUiThread(() =>
            {
                mModuleClassContainerAdapter = new ModuleClassContainerAdapter(mModuleClassContainer);
                mModuleClassContainerAdapter.ItemClick += MModuleClassContainerAdapter_ItemClick;
                mRecyclerView.SetAdapter(mModuleClassContainerAdapter);
                mModuleClassContainerAdapter.NotifyDataSetChanged();
            });
        }

为什么我的事件没有被触发?

布鲁诺·卡塞罗

在您的适配器中,声明 eventHandler,并将其传递给 ViewHolder

public class ModuleClassContainerAdapter  : RecyclerView.Adapter
    {
        // Event handler for item clicks:
        public event EventHandler<int> ItemClick;

// Create a new photo CardView (invoked by the layout manager): 
        public override RecyclerView.ViewHolder 
            OnCreateViewHolder (ViewGroup parent, int viewType)
        {
            // You need to pass the event 
            ModuleViewHolder vh = new ModuleViewHolder (itemView, OnClick); 
            return vh;
        }

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

在你的 ViewHolder

    public class ModuleViewHolder : RecyclerView.ViewHolder
    {
        // Get references to the views defined in the CardView layout.
        public ModuleViewHolder (View itemView, Action<int> listener) 
            : base (itemView)
        {
 on the item view and report which item
            // was clicked (by layout position) to the listener:
            itemView.Click += (sender, e) => listener (base.LayoutPosition);
        }
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我的图片没有显示在 recyclerview 中?

为什么我的RecyclerView没有显示在片段中?

为什么我的 recyclerview 没有在片段中显示数据?

为什么我的数据没有显示在 recyclerview 中?

在 kotlin 为什么我的 recyclerview 不滚动

Bootstrap-为什么我的按钮没有响应?

为什么我的表在单击行时没有响应

为什么我的媒体查询没有响应?

为什么我的OnClicked函数没有响应?

为什么我的Python Turtle屏幕没有响应

为什么我的bootstrap(3)网格没有响应?

为什么我的UItableView中的按钮没有响应?

为什么我的乌龟键绑定没有响应?

为什么.click()不为我的变量赋值?

Vue.js <MyButton @ click =“ click(event)”> Click </ MyButton>不起作用,但是$ event有效,为什么?

为什么我的拖放操作在RecyclerView中失败?

为什么我的片段无法显示recyclerview数据?

我RecyclerView适配器为什么onCreateView不叫?

为什么我在RecyclerView上获得空引用

为什么我的recyclerView重做onBindViewHolder中的内容?

为什么我的图像无法加载到Recyclerview中

为什么我的 recyclerView 不显示任何数据?

为什么我的RecyclerView适配器不起作用?

为什么我在Android中的RecyclerView无法正确显示视图?

为什么我的应用程序因 RecyclerView 而崩溃?

为什么我的自定义ClientHttpRequestInterceptor响应为空

为什么我们需要ng-click?

为什么click事件的preventDefault()也会阻止我的表单提交?

为什么我的event.target无法正常工作?