2017-08-16 4 views
-5

classe principale:retrofit Picasso vue de recyclage 2 en vue de grille

recyclerView = (RecyclerView)findViewById(R.id.card_recycler_view); 
     recyclerView.setHasFixedSize(true); 
     RecyclerView.LayoutManager layoutManager = new GridLayoutManager(getApplicationContext(),2); 
     recyclerView.setLayoutManager(layoutManager); 

      Retrofit retrofit = new Retrofit.Builder() 
        .baseUrl("http://192.168.0.2/littlezebra/scripts/") 
        .addConverterFactory(GsonConverterFactory.create()) 
        .build(); 

      login service = retrofit.create(login.class); 


      Call<dashboard> call = service.dash(); 

      call.enqueue(new Callback<dashboard>() { 
       @Override 
       public void onResponse(Call<dashboard> call, Response<dashboard> response) { 

        dashboard dashboard = response.body(); 
        data = new ArrayList<>(Arrays.asList(dashboard. getDashboard_info())); 
        adapter = new DataAdapter(data,context); 
        recyclerView.setAdapter(adapter); 

       } 

classe d'adaptateur:

public class DataAdapter extends RecyclerView.Adapter<DataAdapter.ViewHolder> { 
    private ArrayList<dashboard.Dashboard_info> android; 
    private Context context; 

    public DataAdapter(ArrayList<dashboard.Dashboard_info> android,Context context) { 
     this.android = android; 
     this.context = context; 
    } 


    public DataAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 
    View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.card_row, viewGroup, false); 
     return new ViewHolder(view); 
    } 

    @Override 
    public void onBindViewHolder(DataAdapter.ViewHolder viewHolder, int i) { 

     viewHolder.tv_name.setText(android.get(i).getId()); 
     Picasso.with(context).load(android.get(i) 
       .getWeek_image()) 
       .resize(250,200) //to resize Image 
       .into(viewHolder.img_android); 
     viewHolder.tv_api_level.setText(android.get(i).getWeek_name()); 
    } 

    @Override 
    public int getItemCount() { 
     return android.size(); 
    } 

    public class ViewHolder extends RecyclerView.ViewHolder{ 
     private TextView tv_name; 
     private ImageView img_android; 
     private TextView tv_api_level; 
     public ViewHolder(View view) { 
      super(view); 

      tv_name = (TextView)view.findViewById(R.id.tv_name); 
      img_android = (ImageView) view.findViewById(R.id.img_android); 
      tv_api_level = (TextView)view.findViewById(R.id.tv_api_level); 

     } 
    } 

processus:

com.example.admin.myappl, PID: 5047 java.lang.IllegalArgumentException: le contexte ne doit pas être nul. au constructeur com.squareup.picasso.Picasso $. (Picasso.java:701) à com.squareup.picasso.Picasso.with (Picasso.java:662) à com.example.admin.myappl.Adapter.DataAdapter.onBindViewHolder (DataAdapter.java:37) à com.example.admin.myappl.Adapter.DataAdapter.onBindViewHolder (DataAdapter.java:18) à android.support.v7.widget.RecyclerView $ Adapter.onBindViewHolder (RecyclerView.java:6400) at android .support.v7.widget.RecyclerView $ Adapter.bindViewHolder (RecyclerView.java:6433) à android.support.v7.widget.RecyclerView $ Recycler.tryBindViewHolderByDeadline (RecyclerView.java:5377) à android.support.v7.widget.RecyclerView $ Recycler.tryGetViewHolderForPositionByDeadline (RecyclerView.java:5640) à android.support.v7.widget.RecyclerView $ Recycler.getViewForPosition (RecyclerView.java:5482) à android.support.v7.widget.RecyclerView $ Recycler.getViewForPosition (RecyclerView.java : 5478) at android.support.v7.widget.LinearLayoutManager $ LayoutState.next (LinearLayoutManager.java:2215) at android.support.v7.widget.Grid LayoutManager.layoutChunk (GridLayoutManager.java:556) à android.support.v7.widget.LinearLayoutManager.fill (LinearLayoutManager.java:1502) à android.support.v7.widget.LinearLayoutManager.onLayoutChildren (LinearLayoutManager.java:595) à androïde .support.v7.widget.GridLayoutManager.onLayoutChildren (GridLayoutManager.java:170) sur android.support.v7.widget.RecyclerView.dispatchLayoutStep2 (RecyclerView.java:3625) sur android.support.v7.widget.RecyclerView.dispatchLayout (RecyclerView .java: 3354) à android.support.v7.widget.RecyclerView.onLayout (RecyclerView.java:3886) à android.view.View.layout (View.java:17838) à android.view.ViewGroup.layout (ViewGroup. java: 5754) à android.widget.RelativeLayout.onLayout (RelativeLayout.java:1189) à android.view.View.layout (View.java:17838) à android.view.ViewGroup.layout (ViewGroup.java:5754) à android.support.design.widget.HeaderScrollingViewBehavior.layoutChild (HeaderScrollingViewBehavior.java:131) sur android.support.design.widget.ViewOffsetBehavior.on LayoutChild (ViewOffsetBehavior.java:42) à android.support.design.widget.AppBarLayout $ ScrollingViewBehavior.onLayoutChild (AppBarLayout.java:1389) à android.support.design.widget.CoordinatorLayout.onLayout (CoordinatorLayout.java:868) at android .view.View.layout (View.java:17838) à android.view.ViewGroup.layout (ViewGroup.java:5754) à android.support.v4.widget.DrawerLayout.onLayout (DrawerLayout.java:1192) à android. view.viewout (View.java:17838) à android.view.ViewGroup.layout (ViewGroup.java:5754) à android.widget.FrameLayout.layoutChildren (FrameLayout.java:383) à android.widget.FrameLayout.onLayout (FrameLayout.java:321) à android.view.View.layout (View.java:17838) à android.view.ViewGroup.layout (ViewGroup.java:5754) à android.widget.LinearLayout.setChildFrame (LinearLayout.java: 1982) à android.widget.LinearLayout.layoutVertical (LinearLayout.java:1826) à android.widget.LinearLayout.onLayout (LinearLayout.java:1735) à android.view.View.layout (View.java:17838) à android. Voir.Vi ewGroup.layout (ViewGroup.java:5754) à android.widget.FrameLayout.layoutChildren (FrameLayout.java:383) à android.widget.FrameLayout.onLayout (FrameLayout.java:321) à android.view.View.layout (Affichage .java: 17838) à android.view.ViewGroup.layout (ViewGroup.java:5754) à android.widget.LinearLayout.setChildFrame (LinearLayout.java:1982) à android.widget.LinearLayout.layoutVertical (LinearLayout.java:1826) à android.widget.LinearLayout.onLayout (LinearLayout.java:1735) à android.view.View.layout (View.java:17838) à android.view.ViewGroup.layout (ViewGroup.java:5754) à android.widget. FrameLayout.layoutChildren (FrameLayout.java:383) à android.widget.FrameLayout.onLayout (FrameLayout.java:321) à com.android.internal.policy.DecorView.onLayout (DecorView.java:751) à android.view.View .layout (View.java:17838) 08-16 17: 01: 40.928 5047-5047/com.example.admin.myappl E/AndroidRuntime: à android.view.ViewGroup.layout (ViewGroup.java:5754) à android. view.ViewRootImpl.performLayout (ViewRootImpl.java:2722)
at android.view.ViewRootImpl.performTraversals (ViewRootImpl.java: 2395) à android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1473) à android.view.ViewRootImpl $ TraversalRunnable.run (ViewRootImpl.java:6976)

+0

Copie possible de [Qu'est-ce qu'une exception NullPointerException et comment la réparer?] (Https://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) –

Répondre

0

changementadapter = new DataAdapter(data,context); ligne adapter = new DataAdapter(data,YourActivity.this);

puis, allez à la classe d'adaptateur ,

coller

public class DataAdapter extends RecyclerView.Adapter<DataAdapter.ViewHolder> { 
    private ArrayList<dashboard.Dashboard_info> android; 
    private Activity activity; 

    public DataAdapter(ArrayList<dashboard.Dashboard_info> android,Activity activity) { 
     this.android = android; 
     this.activity = activity; 
    } 

utilisent maintenant picasso avec

Picasso.with(activity).load(android.get(i) 
       .getWeek_image()) 
       .resize(250,200) 
       .into(viewHolder.img_android); 
0

Comme l'erreur indique, vous passez l'objet null à la méthode Picasso.with().

Pour résoudre ce problème, vous pouvez faire quelque chose comme ça dans votre méthode onBindViewHolder():

//inside onBindViewHolder() 
Picasso.with(holder.itemView.getContext()).load("url here").into(yourImageView); 

Donc, comme vous pouvez le voir, vous ne même pas besoin de passer contexte à votre adaptateur dans le constructeur.