ListItem Click上的InvalidCastException(适用于Android的Mono)
本文关键字:Android Mono 适用于 Click 上的 InvalidCastException ListItem | 更新日期: 2023-09-27 18:29:27
1.)我的main.xml
包含:
<ListView
android:id="@+id/lsym"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
2.)填充列表后,我将为其分配一个adapter
,如下所示:
lsym.Adapter=new SymbolAdapter(this,result);
其中CCD_ 3是CCD_。
3.)在SymbolAdapter
中,我使用过:
convertView = inflater.Inflate(Resource.Layout.list_symbol, null);
4.)list_symbol.xml
包含:
<RelativeLayout android:id="@+id/symbolLayout"
android:layout_height="wrap_content"
android:layout_width="wrap_content">
<TextView
android:id="@+id/tvsym"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
5.)最后,对于列表项单击,我使用以下代码片段:
lsym.ItemClick+= SearchItem_Click;
&
private void SearchItem_Click(object sender, ItemEventArgs e)
{
string company=((TextView)e.View).Text;
Toast.MakeText(this, "Selected="+company,ToastLength.Short).Show();
}
如本文所述。
但是当我点击一个列表项时,它会给我以下错误:
System.InvalidCastException: Cannot cast from source type to destination type.
SearchItem_Click (object,Android.Widget.ItemEventArgs)
在CCD_ 7处。
知道为什么会发生这种事吗?我知道我已经发布了很多代码,但由于我是android单声道的绝对初学者,所以任何帮助都很感激。
e.View
是RelativeLayout
,因此将其强制转换为TextView将不起作用。。。相反,您应该在该视图上调用FindViewById(Resource.Id.tvsym)
(不仅仅是普通的,因为它将在"活动"上调用)
代码应该看起来像:
TextView rowText = (TextView)e.View.FindViewById(Resource.Id.tvsym);
EDIT:或者在Mono中可以使用:
TextView rowText = e.View.FindViewById<TextView>(Resource.Id.tvsym);