2016-09-09 2 views
0

Я попытался отобразить ArrayList в Picasso с RecyclerView, но у меня проблема с Picasso.
Как загрузить данные из ArrayList в Picasso?Ошибка с библиотекой Picasso в

это адаптер

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

и это модуль

public class ImagesModule 

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

и здесь я получаю JSON и добавить его в ArrayList

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

Где код Исключения LogCat? – Andro

+0

У вас есть одно изображение, и вы хотите установить для него массив изображений! –

+0

Да! как я могу это сделать? –

ответ

0

Вы должны получить один URL изображения для загрузки в Picasso, вы не можете загрузить список.

Кроме того, этот класс является в основном списком, поэтому просто рассматривайте его как один.

public class ImagesModule extends ArrayList<String> { 

} 

Синтаксический - два варианта, один модуль для всех изображений, или как-то иметь дело с одним модулем на запись DataPoint

// 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... 
    } 

Теперь вы можете загрузить строку в Picasso

@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 Я попробую это, но как установить изображение? от json ??? –

+0

Тем не менее, я рекомендую Gson для десериализации JSON. –

+0

его не работает! изображение не отображается! –

0

использование под кодом в onBindViewHolder()

Picasso.with(context).load(imagesModule.getAllimage().get(position).into(holder.appImage); 
Смежные вопросы