2017-01-02 5 views
2

Ich verwende FirebaseRecyclerAdapter, um eine RecyclerView in einer Fragment zu füllen.RecyclerView lädt keine Daten beim ersten Start mit FirebaseRecyclerAdapter

Hier ist mein Code

mDatabase = FirebaseDatabase.getInstance().getReference(); 
myAdapter = new FirebaseRecyclerAdapter<Product, ProductViewHolder>(Product.class, 
     R.layout.product_item,ProductViewHolder.class, 
     mDatabase.child("clothes")) { 
    @Override 
    protected void populateViewHolder(ProductViewHolder viewHolder, Product model, int position) { 
     mProgressBar.setVisibility(ProgressBar.INVISIBLE); 
     viewHolder.name.setText(model.name); 
     viewHolder.price.setText(model.price); 
     Glide.with(getActivity()).load(model.imageUri).into(viewHolder.thumbnail); 
     Log.d("NAME", model.name); 
    } 
}; 
recyclerView.setAdapter(myAdapter); 

Das Problem ist, das ProgressBar hält in dem ersten Start zu bewegen, es versteckt sich nie und die RecyclerView zeigt nie selbst, aber wenn ich die App beenden und wieder starten, die RecyclerView ist richtig bevölkert, auch wenn der Bildschirm sich selbst sperrt und ich ihn entsperre, wird der RecyclerView aufgefüllt. Ich bin verwirrt.

+0

Ist das Code-Segment von 'onCreateView'? –

Antwort

4

Entfernen Sie die recyclerView.setHasFixedSize(true) Einstellung von Ihr Code und dann überprüfen Sie, ob der Code jetzt funktioniert.

Und für die Entlassung der ProgressBar, ist es gut, die Sichtbarkeit auf GONE zu setzen.

mProgressBar.setVisibility(View.GONE); 

Für weitere Informationen können Sie dies Github link sehen. Ich denke, das gleiche Problem wird hier gemeldet.

+0

Danke! Es hat mich verrückt gemacht! :) – Mufad

+0

Gut zu wissen, dass geholfen hat! –

0

In Ihrer activity.xml Datei gesetzt ProgressBar Eigenschaft

android:visibility="invisible"

und in Ihrem populateViewHolder Methode, setzen mProgress.setVisibility(View.GONE); nach Daten zu Textviews & Image

protected void populateViewHolder(ProductViewHolder viewHolder, Product model, int position) { 
     viewHolder.name.setText(model.name); 
     viewHolder.price.setText(model.price); 
     Glide.with(getActivity()).load(model.imageUri).into(viewHolder.thumbnail); 
     mProgress.setVisibility(View.GONE); 
     Log.d("NAME", model.name); 
    } 
Verwandte Themen