2016-09-09 3 views
0

Ich habe versucht, eine ArrayList in Picasso mit einem RecyclerView anzuzeigen, aber ich habe ein Problem mit Picasso.
Wie kann ich die Daten von der ArrayList nach Picasso laden?Fehler mit Picasso-Bibliothek in

dies ist der Adapter

public class ImageViewAdapter extends RecyclerView.Adapter<ImageViewAdapter.ViewHolder> { 
List<ImagesModule> imagesModules; 
Context context; 

public ImageViewAdapter(List<ImagesModule> imagesModules, Context context){ 
    super(); 
    this.imagesModules = imagesModules; 
    this.context = context;} 
@Override 
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.imageitem, parent,false); 
    ViewHolder viewHolder = new ViewHolder(v); 

    return viewHolder;} 
@Override 
public void onBindViewHolder(ViewHolder holder, int position) { 
    final ImagesModule imagesModule = imagesModules.get(position); 
    Picasso.with(context).load(String.valueOf(imagesModule.getAllimage()).into(holder.appImage)); 
} 
@Override 
public int getItemCount() { 
    return imagesModules.size(); 
} 
class ViewHolder extends RecyclerView.ViewHolder { 
    public ImageView appImage; 
    public ViewHolder(View itemView) { 
     super(itemView); 
     appImage = (ImageView) itemView.findViewById(R.id.appimages); 
    }} 

und das ist das Modul

public class ImagesModule 

{ 
public List<String> getAllimage() { 
    return Allimage;} 
public void setAllimage(List<String> allimage) { 
    Allimage = allimage;} 
List<String> Allimage = new ArrayList<String>(); 
    } 

und hier habe ich die JSON erhalten und an die

JSONArray jsonArray = response.getJSONObject("feed").getJSONArray("entry"); 
for (int i = 0; i < jsonArray.length(); i++) { 
    JSONArray imageArray = response.getJSONObject("feed").getJSONArray("entry").getJSONObject(i).getJSONArray("im:image"); 
    List<String> allimage = new ArrayList<String>(); 


    for (int j=0; i<imageArray.length(); j++) { 
     JSONObject actor = imageArray.getJSONObject(i); 
     String name = actor.getString("label"); 
     allimage.add(name); 
     imagesModule.setAllimage(allimage); 
    } 
+0

Wo Code Ausnahmen LogCat? – Andro

+0

Sie haben eine Bildansicht und Sie möchten ein Array mit Bildern erstellen! –

+0

Ja! wie kann ich es tun ? –

Antwort

0

Sie müssen Arraylist hinzufügen, erhalten Wenn Sie eine Bild-URL in Picasso laden, können Sie keine Liste laden.

Auch diese Klasse ist im Grunde eine Liste, also behandeln Sie sie als eine.

public class ImagesModule extends ArrayList<String> { 

} 

Parsing - Zwei Optionen, ein Modul für alle Bilder oder irgendwie mit einem Modul pro Eintrag beschäftigen Datenpunkt

// TODO: Determine if you want one 'master' module for all the images 
ImagesModule module = new ImagesModule(); 

JSONArray jsonArray = response.getJSONObject("feed").getJSONArray("entry"); 
for (int i = 0; i < jsonArray.length(); i++) { 
    // TODO: Determine if you want one module 'per entry' 
    /*** ImagesModule module = new ImagesModule(); ***/ 
    JSONArray imageArray = jsonArray.getJSONObject(i).getJSONArray("im:image"); 

    for (int j=0; i<imageArray.length(); j++) { 
     JSONObject actor = imageArray.getJSONObject(i); 
     String name = actor.getString("label"); 
     module.add(name); // TODO: Actually get an image, not an actor probably... 
    } 

Nun können Sie diesen String in Picasso laden

@Override 
public void onBindViewHolder(ViewHolder holder, int position) { 
    final ImagesModule imagesModule = imagesModules.get(position); 

    final String img = imagesModule.get(position); 
    Picasso.with(context).load(img).into(holder.appImage)); 
} 
+0

ok ich werde das versuchen, aber wie man Bild einstellen? von json ??? –

+0

Dennoch empfehle ich Gson zum Deserialisieren des JSON. –

+0

es funktioniert nicht! Kein Bild wird angezeigt! –

0

verwenden Sie unter Code in onBindViewHolder()

Picasso.with(context).load(imagesModule.getAllimage().get(position).into(holder.appImage);