从列表视图单击项目时出错
Posted
技术标签:
【中文标题】从列表视图单击项目时出错【英文标题】:Error when clicking item from listview 【发布时间】:2016-04-03 14:39:03 【问题描述】:有人能告诉我为什么在从这个列表视图中选择一个项目时我无法通过选择甚至吐司。
protected void onPostExecute(List<uploadedContentModels> result)
super.onPostExecute(result);
dialog.dismiss();
if (result != null)
VidAddressAdapter adapter = new VidAddressAdapter(getApplicationContext(), R.layout.rowv_vid, result);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener()
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
String choice = ((TextView)view).getText().toString();
Toast.makeText(getBaseContext(), choice, Toast.LENGTH_LONG).show();
// Uri video = Uri.parse(clickedAddress);
// videoView.setVideoURI(video);
// videoView.start();
);
我得到的错误是;
04-03 18:31:00.844 24899-24899/net.we4x4.we4x4 E/androidRuntime: FATAL EXCEPTION: main
Process: net.we4x4.we4x4, PID: 24899
java.lang.ClassCastException: android.widget.LinearLayout cannot be cast to android.widget.TextView
at net.we4x4.we4x4.MyUploadedVideos$JsonTask$1.onItemClick(MyUploadedVideos.java:185)
at android.widget.AdapterView.performItemClick(AdapterView.java:302)
at android.widget.AbsListView.performItemClick(AbsListView.java:1196)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3054)
at android.widget.AbsListView$3.run(AbsListView.java:3812)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5584)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
at dalvik.system.NativeStart.main(Native Method)
在主要活动中,我有一个由 JsonArray 填充的列表视图 - 视频剪辑地址,当其中一个单击时,它应该传递给 VideoView。我无法做到这一点,正如你所看到的,我评论了代码的那部分,因为我在尝试将地址解析为 uri 时遇到错误,当我尝试只 Toast 选择时,我也得到了一个错误。 ?
【问题讨论】:
【参考方案1】:这里的 getName() 是你的 PogoClass 项目名称,带有 getter 和 setter,根据你的 getter setter 项目名称进行更改
String choice = result.get(position).getName();
Toast.makeText(getBaseContext(), choice, Toast.LENGTH_LONG).show();
【讨论】:
【参考方案2】:您的错误是:android.widget.LinearLayout cannot be cast to android.widget.TextView
。这仅仅意味着您正在尝试转换两个不同的类,您应该转换为正确的类型:((MyClass)view)
或按位置获取项目result.get(position)
result
是您的视频列表。
【讨论】:
【参考方案3】:看起来您的 listView
项目的类型为 LinearLayout
。在onItemClickListener
内部,view
参数代表您的列表项,因此您尝试将LinearLayout
强制转换为TextView
。也许您在LinearLayout
中有一个TextView
,所以要获得它,您需要调用 findViewById。
使用这个
((TextView)((LinearLayout)view).findViewById(R.id.your_textview_id)).getText().toString();
而不是
((TextView)view).getText().toString();
从TextView
获取文本。
【讨论】:
Dimitri Timofti,你是对的,我能够弄清楚,@Amiti_Ranjan 的建议解决了问题,我能够 Toast,然后将其作为 Uri 传递给 VideoView,进一步我可能需要使用您的建议,我仍在等待对该帖子的答复:***.com/questions/36370934/…以上是关于从列表视图单击项目时出错的主要内容,如果未能解决你的问题,请参考以下文章