从列表视图中单击项目时出错
Error when clicking item from listview
谁能告诉我为什么我无法通过选择,甚至无法从列表视图中选择一个项目。
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.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.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)
在主要 activity 中,我有一个由 JsonArray 填充的列表视图 - 视频剪辑地址,当其中一个被点击时,它应该被传递到 VideoView。我无法做到这一点,正如你看到的那样,我评论了那部分代码,因为我在尝试将地址解析为 uri 时遇到错误,当我尝试只选择 Toast 时,我也遇到了错误。 ?
您的错误显示:android.widget.LinearLayout cannot be cast to android.widget.TextView
。这只是意味着您正在尝试转换两个不同的 类,您应该转换为正确的类型:((MyClass)view)
或按位置 result.get(position)
获取项目
result
是您的视频列表。
您的 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
获取文本。
这里的 getName() 是你的 PogoClass 项目名称 getter 和 setter,根据你的 getter setter 项目名称更改这个
String choice = result.get(position).getName();
Toast.makeText(getBaseContext(), choice, Toast.LENGTH_LONG).show();
谁能告诉我为什么我无法通过选择,甚至无法从列表视图中选择一个项目。
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.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.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)
在主要 activity 中,我有一个由 JsonArray 填充的列表视图 - 视频剪辑地址,当其中一个被点击时,它应该被传递到 VideoView。我无法做到这一点,正如你看到的那样,我评论了那部分代码,因为我在尝试将地址解析为 uri 时遇到错误,当我尝试只选择 Toast 时,我也遇到了错误。 ?
您的错误显示:android.widget.LinearLayout cannot be cast to android.widget.TextView
。这只是意味着您正在尝试转换两个不同的 类,您应该转换为正确的类型:((MyClass)view)
或按位置 result.get(position)
获取项目
result
是您的视频列表。
您的 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
获取文本。
这里的 getName() 是你的 PogoClass 项目名称 getter 和 setter,根据你的 getter setter 项目名称更改这个
String choice = result.get(position).getName();
Toast.makeText(getBaseContext(), choice, Toast.LENGTH_LONG).show();