2

Je viens de commencer avec Firestore. J'ai donc essayé d'ajuster mes données directement dans un recyclerview, voici le code que j'ai utilisé pour référence. Voici mon UserRecyclerView Fragment:Firestore dans recyclerview utilisant FirebaseUI, aucune donnée affichée

public class UserRecyclerView extends Fragment{ 
private ArrayList<User> user; 
RecyclerView mRecyclerView; 
public UserRecyclerView(){} 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.recycler_view,container,false); 
    mRecyclerView = (RecyclerView) view.findViewById(R.id.recycler_view); 

    FirestoreRecyclerAdapter adapter = getFirestoreRecyclerAdapter(); 
    mRecyclerView.setAdapter(adapter); 
    mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); 

return view; 
} 

@NonNull 
private FirestoreRecyclerAdapter getFirestoreRecyclerAdapter() { 
    Query query = FirebaseFirestore.getInstance() 
      .collection("users"); 

    FirestoreRecyclerOptions<User> options = new FirestoreRecyclerOptions.Builder<User>() 
      .setQuery(query, User.class).build(); 

    return new FirestoreRecyclerAdapter<User, UserViewHolder>(options) { 
     @Override 
     protected void onBindViewHolder(UserViewHolder holder, int position, User model) { 
      Log.d("USER", "DATA: "+model.getName()); 
      holder.BindView(position, model); 

     } 
     @Override 
     public UserViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
      View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.users_list, parent, false); 

      return new UserViewHolder(view); 
     } 
    }; 
} 

private class UserViewHolder extends RecyclerView.ViewHolder{ 
    TextView info; 
    UserViewHolder(View itemView) { 
     super(itemView); 
     info = (TextView) itemView.findViewById(R.id.info_text); 
    } 

    void BindView(int position, User model){ 

     info.setText(model.getName()+" , "+model.getId()); 
    } 
} 

Il n'y a rien dans mon MainActivity sauf pour démarrer le fragment ci-dessus. Je ne sais pas ce qui ne va pas avec mon code. Il ne montre aucune erreur, quand je cours l'application elle ne plante pas. Il entre simplement dans la disposition recyclerview, je l'ai vérifié en plaçant un champ textview pour être sûr (maintenant enlevé). Je veux que tu m'aides avec le code. C'est probablement à cause de l'adaptateur? Aide-moi à comprendre. J'ai également téléchargé un extrait de ma base de données. Merci d'avance!

Répondre

0

Créer recyclerview comme ci-dessous:

FirestoreRecyclerAdapter adapter = getFirestoreRecyclerAdapter(); 
//add below line 
mRecyclerView.setHasFixedSize(true); 
mRecyclerView.setAdapter(adapter); 
mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));