2016-12-29 3 views
1

Ich versuche, Json mit Retrofit zu analysieren. Ich versuche, die Werte in Listview mit BaseAdapter anzuzeigen. Wenn ich Karte innerhalb BaseAdapter verwende, erhalte ich den folgenden Fehler.java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap kann nicht in com umgewandelt werden. Beispiel

java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap kann nicht auf com.example.prakash.pix91.get.Templates.pixjson.EffectList bei com.example.prakash.pix91.get gegossen werden. Templates.multiple_array.MyContactAdapter2.getView (MyContactAdapter2.java:76)

Was mache ich hier falsch?

Thankyou

MyContactAdapter2.java

public class MyContactAdapter2 extends BaseAdapter { 
    List<Map<String, List<EffectList>>> contactList; 
    Context context; 
    private LayoutInflater mInflater; 

    public MyContactAdapter2(Context context, List<Map<String, List<EffectList>>> objects) { 
     this.context = context; 
     this.mInflater = LayoutInflater.from(context); 
     contactList = objects; 
    } 


    @Override 
    public int getCount() { 
     Integer s = contactList.size(); 
     Log.d("Total count ", s.toString()); 
     return contactList.size(); 
    } 


    @Override 
    public Object getItem(int position) { 

     return contactList.get(position); 
    } 


    @Override 
    public long getItemId(int i) { 
     return 0; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     final ViewHolder1 vh1; 
     if (convertView == null) { 
      View view = mInflater.inflate(R.layout.get_layout_row_view, parent, false); 
      vh1 = ViewHolder1.create((RelativeLayout) view); 
      view.setTag(vh1); 
     } else { 
      vh1 = (ViewHolder1) convertView.getTag(); 
     } 


     EffectList item = (EffectList) getItem(position); 


     // vh.textViewName.setText(item.getEffectsId()); 


     vh1.textViewName.setText(item.getEffectsName()); 
     vh1.textViewEmail.setText(item.getEffectsId()); 

     // Picasso.with(context).load(item.getProfilePic()).placeholder(R.mipmap.ic_launcher).error(R.mipmap.ic_launcher).into(vh.imageView); 

     return vh1.rootView; 
    } 


    private static class ViewHolder1 { 
     public final RelativeLayout rootView; 
     public final ImageView imageView; 
     public final TextView textViewName; 
     public final TextView textViewEmail; 

     private ViewHolder1(RelativeLayout rootView, ImageView imageView, TextView textViewName, TextView textViewEmail) { 
      this.rootView = rootView; 
      this.imageView = imageView; 
      this.textViewName = textViewName; 
      this.textViewEmail = textViewEmail; 
     } 

     public static MyContactAdapter2.ViewHolder1 create(RelativeLayout rootView) { 
      ImageView imageView = (ImageView) rootView.findViewById(R.id.imageView); 
      TextView textViewName = (TextView) rootView.findViewById(R.id.textViewName); 
      TextView textViewEmail = (TextView) rootView.findViewById(R.id.textViewEmail); 
      return new MyContactAdapter2.ViewHolder1(rootView, imageView, textViewName, textViewEmail); 
     } 
    } 
} 
+0

Sieht so aus, als ob Ihre 'JSON' nicht wie gewünscht geparst wurde. –

Antwort

0

Das Problem ist in dieser Zeile:

EffectList item = (EffectList) getItem(position); 

Ihre Artikel sind nicht EffectList s, sie sind eine Liste von Map als Sie können hier sehen:

List<Map<String, List<EffectList>>> contactList; 

Sie haben die Methode getItem außer Kraft gesetzt und die entsprechende Karte aus der Liste zurückgegeben. Da Sie eine Map Aufruf von getItem Aufruf erhalten, müssen Sie die Logik für die EffectList daraus zu überdenken.

Ich weiß nicht, was Sie mit dieser komplexen Struktur von List<Map<String, List<EffectList>>> zu tun versuchen, aber vielleicht wollten Sie nur eine List<EffectList haben?

Verwandte Themen