2016-04-13 27 views
0

Görüntüleri bir RecyclerView yüklemeye çalışıyorum.Android, volley + recycler ile görüntüyü yüklüyorGörüntüle

aşağıdaki hata ile sol ve sağ (yatay RecyclerView), bazı resimler (kenarlarında bir) ortadan kaydırın gelene kadar tamam çalışıyor

:

Volley: [3267] NetworkDispatcher.run: işlenmeyen özel durum java.lang.IllegalArgumentException: genişlik ve yükseklik Şimdi burada benim adaptör sınıftır> 0

olmalıdır (buradaki sorunun olduğuna inanıyoruz):

package com.rezadiscount.rezadiscount.adapter; 

import android.content.Context; 
import android.support.v7.widget.RecyclerView; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.LinearLayout; 

import com.android.volley.toolbox.NetworkImageView; 
import com.rezadiscount.rezadiscount.R; 
import com.rezadiscount.rezadiscount.activities.FragmentBusinessProfile; 
import com.rezadiscount.rezadiscount.utilities.HTTPVolleyRequest; 
import com.rezadiscount.rezadiscount.utilities.QuickstartPreferences; 

import java.util.ArrayList; 

//TODO Images disappear in list 

/** 
* Adapter of finding a business by category 
*/ 
public class BusinessPictureAdapter extends RecyclerView.Adapter<BusinessPictureAdapter.CategoryViewHolder> { 
    private ArrayList<String> businessPictureList; 
    private Context con; 

    // Provide a suitable constructor (depends on the kind of dataset) 
    public BusinessPictureAdapter(ArrayList<String> businessPictureListP, Context conP) { 
     con = conP; 
     businessPictureList = businessPictureListP; 
    } 

    // Create new views (invoked by the layout manager) 
    @Override 
    public BusinessPictureAdapter.CategoryViewHolder onCreateViewHolder(ViewGroup parent, 
                     int viewType) { 
     // create a new view 
     View v = LayoutInflater.from(parent.getContext()) 
       .inflate(R.layout.business_picture_item, parent, false); 
     // set the view's size, margins, paddings and layout parameters 

     return new CategoryViewHolder((LinearLayout) v); 
    } 

    // Replace the contents of a view (invoked by the layout manager) 
    @Override 
    public void onBindViewHolder(CategoryViewHolder holder, int position) { 
     // - get element from your dataset at this position 
     // - replace the contents of the view with that element 
     holder.imageView.setImageUrl(QuickstartPreferences.URL_IMAGES + businessPictureList.get(position), HTTPVolleyRequest.getInstance(con).getImageLoader()); 

     Log.d("CardView Text", "Image url" + QuickstartPreferences.URL_IMAGES + businessPictureList.get(position)); 

     //holder.currentItem = items.get(position); 

    } 

    // Return the size of your dataset (invoked by the layout manager) 
    @Override 
    public int getItemCount() { 
     return businessPictureList.size(); 
    } 

    @Override 
    public void onAttachedToRecyclerView(RecyclerView recyclerView) { 
     super.onAttachedToRecyclerView(recyclerView); 
    } 

    // Provide a reference to the views for each data item 
    // Complex data items may need more than one view per item, and 
    // you provide access to all the views for a data item in a view holder 
    public class CategoryViewHolder extends RecyclerView.ViewHolder { 
     // each data item is just a string in this case 
     public NetworkImageView imageView; 

     public CategoryViewHolder(LinearLayout v) { 
      super(v); 
      imageView = (NetworkImageView) v.findViewById(R.id.business_picture); 

      v.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

       } 
      }); 
     } 
    } 
} 

Not: Bunu şu anda araştırdım ve sorunu şu ana kadar çözemedim. Herhangi bir yardım çok takdir edilmektedir.

+2

Picasso lib uygulamasını volley kullanmak yerine sunucudan önbelleğe almak ve indirmek için kullanmayı denediniz mi? – TranHieu

+0

Belki yapabilirim, ama neden? Benim kodumda bir sorun varsa ya da voleybolda bir hata varsa (ki şüphe duyuyorum) burada merak ediyorum –

cevap

1

Tranhieu'un önerdiği gibi, Picasso'yu kullandım ve şimdi çalışıyor. Kullanımı oldukça kolay ve oldukça seksi, bunu tavsiye ederim. Şimdi neden voleybolun farklı bir önbellek yönetimi olmasın, daha fazla bakmayacağım.