0

Ich habe eine RecyclerView, die eine Liste von Karten zeigen muss, aber es nicht! Es gibt eine ArrayListe von Rezepten, die an den Adapter übergeben werden, um sie als Kartenansichten anzuzeigen, alles im Debugging scheint in Ordnung zu sein, aber es zeigt nichts auf dem Bildschirm an. ViewHolder:RecyclerView, die cardViews anzeigen soll zeigt nichts

import android.support.v7.widget.RecyclerView; 
import android.view.View; 
import android.widget.ImageView; 
import android.widget.TextView; 

import com.example.nd.ameer.bake.R; 

public class RecipeViewHolder extends RecyclerView.ViewHolder { 

    public TextView titleTextView; 
    public ImageView coverImageView; 

    public RecipeViewHolder(View v) { 
     super(v); 
     titleTextView = (TextView) v.findViewById(R.id.titleTextView); 
     coverImageView = (ImageView) v.findViewById(R.id.recipeImageView); 
    } 
} 

Adapter:

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

import com.bumptech.glide.Glide; 
import com.example.nd.ameer.bake.R; 
import com.example.nd.ameer.bake.models.Recipe; 
import com.example.nd.ameer.bake.views.holders.RecipeViewHolder; 

import java.net.MalformedURLException; 
import java.net.URL; 
import java.util.ArrayList; 

public class RecipeAdapter extends 

RecyclerView.Adapter<RecipeViewHolder> { 


    ArrayList<Recipe> recipes = new ArrayList<>(); 
    Context context; 

    public RecipeAdapter(ArrayList<Recipe> recipes, Context context) { 
     this.recipes = recipes; 
     this.context = context; 
    } 

    @Override 
    public RecipeViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View view = LayoutInflater.from(context).inflate(R.layout.recipe_item, parent, false); 
     return new RecipeViewHolder(view); 
    } 

    @Override 
    public void onBindViewHolder(RecipeViewHolder holder, int position) { 

     holder.coverImageView.setImageResource(R.color.colorPrimaryLight); 
     holder.titleTextView.setText(recipes.get(position).getName()); 
    } 

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

Fragment onCreateView:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    rootView = inflater.inflate(R.layout.fragment_recipe, container, false); 

    createRecipes(); 

    recyclerView = (RecyclerView) rootView.findViewById(R.id.rv_recipe); 
    recyclerView.setHasFixedSize(true); 
    LinearLayoutManager layoutManager = new LinearLayoutManager(getContext()); 
    layoutManager.setOrientation(LinearLayoutManager.VERTICAL); 
    if (recipes.size() > 0 & recyclerView != null) { 
     recyclerView.setLayoutManager(layoutManager); 
     recyclerView.setAdapter(new RecipeAdapter(recipes, getContext())); 
    } 
    return rootView; 
} 

der Methode createRecipes(); erstellt eine Liste von Rezepten und wird dann an den Adapter übergeben.

as you can see, the recipes size is 4, so it's not the problem

+0

Sind Sie sicher, dass die Größe der Liste 'Rezepte' nicht 0 ist? –

+0

Ja, es ist immer 4, die gleiche Liste –

+0

können Sie Ihre createRecipes() Code und Logcat Logs –

Antwort

0

Ich wusste nicht die Ursache des Problems bis jetzt, aber ich zog den Adapter und den Blick Halter an das Rezepte Fragment als innere Klassen, und das Problem behoben ist.