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单声道的绝对初学者,所以任何帮助都很感激。

ListItem Click上的InvalidCastException(适用于Android的Mono)

e.ViewRelativeLayout,因此将其强制转换为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);