从listview中单击项目时出错

时间:2016-04-03 14:39:04

标签: android listview android-studio uri android-videoview

有人可以告诉我为什么在从列表视图中选择项目时我无法通过选择甚至是吐司。

 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这个选择时我也得到了一个错误。 ?

3 个答案:

答案 0 :(得分:1)

您的错误说:android.widget.LinearLayout cannot be cast to android.widget.TextView。这只是意味着你试图投两个不同的类,你应该转换为正确的类型:((MyClass)view) 或按位置result.get(position)获取项目 result是您的视频列表。

答案 1 :(得分:1)

您的listView项似乎属于LinearLayout类型。在onItemClickListener view参数中,LinearLayout参数代表您的列表项,因此您尝试将TextView投射到TextView。也许你在LinearLayout里面有一个((TextView)((LinearLayout)view).findViewById(R.id.your_textview_id)).getText().toString(); 所以为了得到它你需要调用findViewById。

使用此

((TextView)view).getText().toString();

而不是

TextView

class FloaterContainerLayer:CALayer { var gravity:CGFloat = 5.0 var maxFloaters = 9 var image:String? var velocity:CGFloat = 50.0 } 获取文字。

答案 2 :(得分:1)

这里getName()是带有getter和setter的PogoClass项目名称,根据你的getter setter项目名称进行更改

String choice = result.get(position).getName();
Toast.makeText(getBaseContext(), choice, Toast.LENGTH_LONG).show();