问题描述
我使用了 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 这个链接还是很有帮助的。