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);
其中result
是DataTable
。
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();
}
指定here。
但是当点击列表项时,它会给我以下错误:
System.InvalidCastException: Cannot cast from source type to destination type.
SearchItem_Click (object,Android.Widget.ItemEventArgs)
在((TextView)e.View).Text
。
任何想法为什么会发生这种情况? 我知道我已经提供了大量的代码,但因为我绝对是初学者,所以任何帮助都是值得赞赏的。
答案 0 :(得分:2)
e.View
为RelativeLayout
,因此将其投放到TextView将无效...
而不是这个,你应该在该视图上调用FindViewById(Resource.Id.tvsym)
(不仅仅是普通的,因为它将在Activity上调用)
代码应如下所示:
TextView rowText = (TextView)e.View.FindViewById(Resource.Id.tvsym);
编辑:或者在Mono中你可以使用:
TextView rowText = e.View.FindViewById<TextView>(Resource.Id.tvsym);