未调用列表视图中的 xamarin 项目单击

问题描述

我使用了 listView,当我尝试触发 itemclick 函数时,它不会触发。 我试图计算过去 3 个小时,请帮忙

在课堂上:

li = (ListView)FindViewById(Resource.Id.listView1);
li.ItemClick += Li_ItemClick1;
li.ItemLongClick += Li_ItemLongClick;
li.Adapter = adapter;

在 xml:

<ListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/listView1"
        android:layout_marginTop="10dp"
        />

解决方法

您必须在列表视图适配器的 OnBindViewHolder 方法上设置 Click 事件。试试这个代码:

((MyView)holder).mMainView.Click -= Li_ItemClick1;
((MyView)holder).mMainView.Click += Li_ItemClick1;

这也是一个很好的退订和订阅方法,避免多次设置。 “MyView”是处理程序的类,更具体地说,处理程序是使用列表项的属性构建的类。

这是 MyView 类的示例:

 public class MyView : RecyclerView.ViewHolder
    {
       
        public View mMainView { get; set; }
        public TextView mName { get; set; }
        public TextView data { get; set; }
        public ImageView image { get; set; }
        public MyView(View view) : base(view)
        {
            mMainView = view;
            mName = view.FindViewById<TextView>(Resource.Id.text1);
            image = view.FindViewById<ImageView>(Resource.Id.foto);
            data = view.FindViewById<TextView>(Resource.Id.data);
        }
        public override string ToString()
        {
            return base.ToString() + " '" + mName.Text;
        }
    }

这里有一个可能有用的链接:https://riptutorial.com/xamarin-android/example/30066/recyclerview-with-click-events

注意:RecycleView 是一种 ListView(我建议使用 RecycleView,因为它只是 ListView 但经过改进,可以更轻松地执行您想要的操作)。但是如果你想使用 ListView 这个链接还是很有帮助的。