2017-03-12 3 views
-1

j'ai réponse JSON comme ceci:JSON glisser l'image charge recyclerview

[{ 
    "id": 94640, 
    "date": "2016-08-14T21:40:31", 
    "slug": "terungkap-van-gaal-tolak-kehadiran-paul-pogba-di-mu", 
    "title": { 
     "rendered": "Terungkap, Van Gaal Tolak Kehadiran Paul Pogba di MU" 
    }, 
    "better_featured_image": { 
     "media_details": { 
      "sizes": { 
       "medium": { 
        "source_url": "http:\/\/www.opinianda.com\/wp-content\/uploads\/2016\/08\/Pogba-MU-300x300.jpg" 
       } 
      } 
     } 
    } 
}, { 
    "id": 94634, 
    "date": "2016-08-14T19:51:50", 
    "slug": "liverpool-bakal-fight-di-semua-kompetisi-musim-ini", 
    "title": { 
     "rendered": "Liverpool Bakal ‘Fight’ di Semua Kompetisi Musim ini" 
    }, 
    "better_featured_image": { 
     "media_details": { 
      "sizes": { 
       "medium": { 
        "source_url": "http:\/\/www.opinianda.com\/wp-content\/uploads\/2016\/08\/Klopp-300x300.png" 
       } 
      } 
     } 
    } 
}, { 
    "id": 94608, 
    "date": "2016-08-14T13:12:29", 
    "slug": "gara-gara-pogba-pirlo-dan-buffon-tertawakan-manchester-united", 
    "title": { 
     "rendered": "Gara-gara Pogba, Pirlo dan Buffon Tertawakan Manchester United" 
    }, 
    "better_featured_image": { 
     "media_details": { 
      "sizes": { 
       "medium": { 
        "source_url": "http:\/\/www.opinianda.com\/wp-content\/uploads\/2016\/08\/buffon_pirlo-300x300.jpg" 
       } 
      } 
     } 
    } 
}] 

et je veux charger SOURCE_URL avec vol plané. im utilisent déjà plané à onbindview mais son me montrer erreur "Vous ne pouvez pas charger un contexte null"

ma réponse onload

  public void onResponse(Call<List<Coba>> call, Response<List<Coba>> response) { 
      try { 
       List<Coba> jsonResponse = response.body(); 
       data= new ArrayList<>(); 
       data.addAll(jsonResponse); 
       adapter = new MyAdapter(data); 
       adapter.notifyDataSetChanged(); 
       recyclerView.setAdapter(adapter); 
       Log.i("HASIL", "onResponse: "+data); 
      }catch (Exception e) { 
       Log.d("onResponse", "There is an error"); 
       e.printStackTrace(); 
      } 
     } 

thi est ma classe adaptateur

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> { 
private String[] mDataset; 
private ArrayList<Coba> coba; 
private Context mContext; 

public static class MyViewHolder extends RecyclerView.ViewHolder { 
    public CardView mCardView; 
    public TextView mTextView; 
    public TextView mDetView; 
    public TextView mVerView; 
    public ImageView mImgPost; 

    public MyViewHolder(View v) { 
     super(v); 
     mImgPost = (ImageView) v.findViewById(R.id.iv_image); 
     mCardView = (CardView) v.findViewById(R.id.card_view); 
     mTextView = (TextView) v.findViewById(R.id.tv_text); 
     mDetView = (TextView) v.findViewById(R.id.tv_blah); 
     mVerView = (TextView) v.findViewById(R.id.tv_wew); 

    } 
} 

// Provide a suitable constructor (depends on the kind of dataset) 
public MyAdapter(ArrayList<Coba> coba) { 
    this.coba = coba; 
} 

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

@Override 
public void onBindViewHolder(MyAdapter.MyViewHolder holder, int position) { 
    Glide.with(mContext).load(String.valueOf(coba.get(position).getBetterFeaturedImage().getMediaDetails().getSizes().getMedium().getSourceUrl())) 
      .thumbnail(0.5f) 
      .crossFade() 
      .diskCacheStrategy(DiskCacheStrategy.ALL) 
      .into(holder.mImgPost); 
    holder.mTextView.setText(Html.fromHtml(String.valueOf(coba.get(position).getTitle().getRendered()))); 
    holder.mDetView.setText(String.valueOf(coba.get(position).getSlug())); 
    holder.mVerView.setText(String.valueOf(coba.get(position).getId())); 
    holder.mCardView.setOnClickListener(new View.OnClickListener(){ 
     @Override 
     public void onClick(View v){ 
      Intent intent = new Intent(v.getContext(),DetailBerita.class); 
      v.getContext().startActivity(intent); 
      System.out.println("Clicked"); 
     } 
    }); 
} 

@Override 
public int getItemCount() { 
    return (coba == null) ? 0 : coba.size(); 
} 

}

journal des erreurs:

java.lang.IllegalArgumentException: You cannot start a load on a null Context 
                       at com.bumptech.glide.manager.RequestManagerRetriever.get(RequestManagerRetriever.java:84) 
                       at com.bumptech.glide.Glide.with(Glide.java:629) 
                       at com.oktagon.sumberbola.sumberbola.adapters.MyAdapter.onBindViewHolder(MyAdapter.java:71) 
                       at com.oktagon.sumberbola.sumberbola.adapters.MyAdapter.onBindViewHolder(MyAdapter.java:26) 
                       at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6279) 
                       at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6312) 
                       at android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5258) 
                       at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5521) 
                       at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5363) 
                       at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5359) 
                       at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2141) 
                       at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1525) 
                       at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1488) 
                       at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:585) 
                       at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3506) 
                       at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3254) 
                       at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3767) 
                       at android.view.View.layout(View.java:15648) 
                       at android.view.ViewGroup.layout(ViewGroup.java:4967) 
                       at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1077) 

il n'y a rien de mal si je supprime l'imageview. Merci de votre aide.

+0

s'il vous plaît fournir le code de l'endroit où a été u définir l'URL (setSourceUrl) –

+0

edited..i ajouter ma mise à niveau de réponse de charge .. im déjà essayer sans image et tout va bien .. –

+1

Dans quelle ligne vous obtenez le contexte nul s'il vous plaît ajouter le journal complet –

Répondre

2

Vous devez initialiser votre variable mContext.

Par exemple:

@Override 
public MyAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, 
               int viewType) { 
    mContext = parent.getContext(); 
    // create a new view 
    View v = LayoutInflater.from(parent.getContext()) 
      .inflate(R.layout.card_item, parent, false); 
    // set the view's size, margins, paddings and layout parameters 
    MyViewHolder vh = new MyViewHolder(v); 
    return vh; 
} 

Hope this helps.

Désolé pour mon anglais.

+0

ya cochi droite. –

+0

ahhh okay..son travail maintenant ... comment redimensionner l'image avec glissement? –

+0

Vous pouvez utiliser override (int, int) avec des valeurs en pixel, mais le rapport d'aspect ne sera pas respecté – Cochi

1

mContext non initialisé.

Si l'activité

adapter = new MyAdapter(activity.this,data);

Si Fragment

adapter = new MyAdapter(getActivity(),data); 
+0

yess ... merci .. il travaille maintenant .. –

+0

toujours les bienvenus. clairière pour vous aider. –