未调用列表视图中的 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 Forms Switch Toggled 事件未与视图模型绑定