从列表视图单击项目时出错

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/…

以上是关于从列表视图单击项目时出错的主要内容,如果未能解决你的问题,请参考以下文章

单击时将所有项目从列表视图转移到文本视图

带有项目单击侦听器的列表视图在搜索视图中获取错误数据

如何从单击项目打开列表视图?

单击列表视图项

在列表视图中按下项目时出错

单击列表视图中的某些项目时如何影响列表视图之外的元素?