我正在运行以下代码:
@Override
protected void onListItemClick(ListView listView, View view, int position,
long id) {
String item = (String) getListAdapter().getItem(position);
Toast.makeText(this, item + " selected", Toast.LENGTH_LONG).show();
Art art = (Art) getListAdapter().getItem(position);
/*Intent intent = new Intent(this,X.class);
intent.putExtra("art", art);
this.startActivity(intent);*/
}
我的艺术班是这样的:
import java.io.Serializable;
import java.util.List;
import com.google.gson.annotations.SerializedName;
public class Art implements Serializable{
private static final long serialVersionUID = 8359220892008313080L;
@SerializedName("body")
private String body;
@SerializedName("title")
private String title;
@SerializedName("images")
private List<Images> images;
public String getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public List<Images> getImages() {
return images ;
}
public void setImages(List<Images> images) {
this.images = images;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("***** Art *****\n");
sb.append("BODY=" + getBody() + "\n");
sb.append("TITLE=" + getTitle() + "\n");
sb.append("IMAGES=" + getImages() + "\n");
sb.append("*****************************");
return sb.toString();
}
}
这是我的日志,它在此特定行崩溃:Art art =(Art)getListAdapter()。getItem(position);
E/AndroidRuntime(912): FATAL EXCEPTION: main
E/AndroidRuntime(912): java.lang.ClassCastException: java.lang.String cannot be cast to com.Art
E/AndroidRuntime(912): at com.ArtListActivity.onListItemClick(ArtListActivity.java:118)
E/AndroidRuntime(912): at android.app.ListActivity$2.onItemClick(ListActivity.java:319)
感谢您的阅读,我们将非常感谢任何想法/帮助,了解其发生的原因和可能的解决方案。
答案 0 :(得分:1)
Art art = (Art) getListAdapter().getItem(position);
getItem返回一个String,你将它转换为Art。你的列表适配器是字符串,而不是艺术。
答案 1 :(得分:1)
您无法将这些项目投放到String
和Art
。在你的情况下,适配器有一个字符串列表,这就是它抛出ClassCastException的原因。
答案 2 :(得分:0)
类投射如下:
儿童=新儿童();
父母=(父)子;
将起作用。
由于Art类不是类类型String的超类,因此转换将失败。
以下示例:
公共类CastExample {
public static void main(String[] args) {
Child child = new Child();
Parent parent = (Parent) child;
System.out.println(parent.whoami());
// Output: I am a Parent
}
private static class Parent {
public String whoami() {
return "I am a Parent";
}
}
private static class Child extends Parent {
public String whoami() {
return "I am a Child";
}
}
}