2016-10-19 4 views
2

lorsque je tente ci-dessous ligne de codetypes incompatibles trouvés java.lang: ArrayAdapter

ItemRow itemdata = data.get(position); 

en classe ItemAdapter Je suis l'erreur

types incompatibles requis: com.fragment.ItemRow trouvé: java.lang .object

la classe complète ItemRow.java est comme ci-dessous:

Package com.fragments; 

import android.graphics.drawable.Drawable; 

public class ItemRow { 

String itemName; 
Drawable icon; 

public ItemRow(String itemName, Drawable icon) { 
    super(); 
    this.itemName = itemName; 
    this.icon = icon; 
} 

public String getItemName() { 
    return itemName; 
} 
public void setItemName(String itemName) { 
    this.itemName = itemName; 
} 
public Drawable getIcon() { 
    return icon; 
} 
public void setIcon(Drawable icon) { 
    this.icon = icon; 
} 

} 

et la classe Itemadapeter complète dans laquelle j'ai obtenu le type incompatible lorsque j'essaie

-ItemRow itemdata = data.get (position); dans getView

package com.fragments; 
public class ItemAdapter extends ArrayAdapter { 

List data; 
Context context; 
int layoutResID; 

public ItemAdapter(Context context, int layoutResourceId,List data) { 
    super(context, layoutResourceId, data); 

    this.data=data; 
    this.context=context; 
    this.layoutResID=layoutResourceId; 

    // TODO Auto-generated constructor stub 
} 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

    NewsHolder holder = null; 
    View row = convertView; 
    holder = null; 

    if(row == null) 
    { 
     LayoutInflater inflater = ((Activity)context).getLayoutInflater(); 
     row = inflater.inflate(layoutResID, parent, false); 

     holder = new NewsHolder(); 

     holder.itemName = (TextView)row.findViewById(R.id.example_itemname); 
     holder.icon=(ImageView)row.findViewById(R.id.example_image); 
     holder.button1=(Button)row.findViewById(R.id.swipe_button1); 
     holder.button2=(Button)row.findViewById(R.id.swipe_button2); 
     holder.button3=(Button)row.findViewById(R.id.swipe_button3); 
     row.setTag(holder); 
    } 
    else 
    { 
     holder = (NewsHolder)row.getTag(); 
    } 

    ItemRow itemdata = data.get(position); 


    holder.itemName.setText(itemdata.getItemName()); 
    holder.icon.setImageDrawable(itemdata.getIcon()); 

    holder.button1.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      Toast.makeText(context, "Button 1 Clicked",Toast.LENGTH_SHORT).show(); 
     } 
    }); 

    holder.button2.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      Toast.makeText(context, "Button 2 Clicked",Toast.LENGTH_SHORT).show(); 
     } 
    }); 

    holder.button3.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      Toast.makeText(context, "Button 3 Clicked",Toast.LENGTH_SHORT); 
     } 
    }); 

    return row; 

} 

static class NewsHolder{ 

    TextView itemName; 
    ImageView icon; 
    Button button1; 
    Button button2; 
    Button button3; 
} 

} 
+0

; **Pourquoi?** –

Répondre

1

Votre liste est raw type signifie Object donc vous devez descendre sous pression la Object à votre POJO-à-dire ItemRow

ItemRow itemdata = (ItemRow)data.get(position); 

ou vous devriez avoir une liste de type List<ItemRow>, puisqu'il n'y a idée quel type de liste vous passez à cet adaptateur alors assurez-vous de passer le même type que List<ItemRow> dans ce cas plus pour suivre les meilleures pratiques, mentionnez le type avec adaptateur comme extends ArrayAdapter<ItemRow> et apporter les modifications requises à d'autres endroits.

1

Veuillez utiliser List<ItemRow> au lieu de List.

0

Le problème est dû à l'affectation suivante dans votre ItemAdapter

List data; 

Au lieu de cela, essayez ces données de liste brute

ArrayList<ItemRow> data;