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

Posted

技术标签:

【中文标题】未调用列表视图中的 xamarin 项目单击【英文标题】:xamarin item click in listview is not called 【发布时间】:2021-07-11 06:00:32 【问题描述】:

我使用了 listView,当我尝试触发 itemclick 函数时它不会触发。 在过去的 3 个小时里,我试图弄清楚这一点,请帮助

在课堂上:

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

在xml中:

<ListView
        android:layout_
        android:layout_
        android:id="@+id/listView1"
        android:layout_marginTop="10dp"
        />

【问题讨论】:

itemclick 事件在我这边可以很好地触发。您可以尝试再次注册此事件或直接使用委托。如果这仍然不起作用,请检查您的适配器和布局。如果可以的话,能否给我们提供一下适配器和listview的布局? 【参考方案1】:

您必须在列表视图适配器的 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 这个链接还是有用的。

【讨论】:

以上是关于未调用列表视图中的 xamarin 项目单击的主要内容,如果未能解决你的问题,请参考以下文章

使更多列表视图在Xamarin应用程序中同步滚动

Xamarin Forms Switch Toggled 事件未与视图模型绑定

Xamarin 中 StackLayout 内的 ListView 未根据列表视图项高度扩展

xamarin 表单从按钮单击捕获列表视图

如何使列表视图中的项目可点击?

单击列表视图项时检索的值