2014-12-17 3 views
0

Я бегу следующий код, где:Ошибка при нажатии на элемент списка.

@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);*/ 
    } 

My Art Class выглядит следующим образом:

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(); 
    } 

} 

Это мой журнал и он выходит из строя на данной линии: Арт искусство = (ст) getListAdapter() .getItem (положение);

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) 

Любые идеи/помощь относительно того, почему это происходит, и возможное исправление было бы весьма полезно, спасибо за чтение.

ответ

1

Вы не можете нанести предметы на String и Art. В вашем случае адаптер имеет список строк, поэтому он генерирует исключение ClassCastException.

1

Art art = (Art) getListAdapter().getItem(position);

GetItem возвращает строку, и вы бросаете его в ст. Ваш адаптер списка содержит строки, а не Arts.

0

Класс отлит как: Ребенок = новый Ребенок();
Родительский родительский = (родительский) ребенок;

будет работать, если родитель - класс супер детей.

Как класс Искусство не является суперклассом класса типа 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"; 
    } 
} 

}

Смежные вопросы