java - RecyclerView Not Displaying Data Received -


i getting data firebase (online data storage) somehow in adapter class, dataset []. when pass in 20 random things using same class, works perfectly. here code.

fragment class:

@override public void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     myfirebaseref = new firebase("http...");     initlistitems(); }    @override public view oncreateview(layoutinflater inflater, viewgroup container,                          bundle savedinstancestate) {     view rootview = inflater.inflate(r.layout.fragment_products, container, false);     // inflate layout fragment     mrecyclerview = (recyclerview) rootview.findviewbyid(r.id.list);     mrecyclerview.setlayoutmanager(new linearlayoutmanager(getactivity().getapplicationcontext()));      madapter = new myadapter(mdataset);     mrecyclerview.setadapter(madapter);       return rootview;  } // data firebase , set list private void initlistitems() {      // attach listener read data @ our posts reference     myfirebaseref.addvalueeventlistener(new valueeventlistener() {         @override         public void ondatachange(datasnapshot snapshot) {             system.out.println("there " + snapshot.getchildrencount() + "children");              (datasnapshot postsnapshot : snapshot.getchildren()) {                  title = postsnapshot.child("name").getvalue().tostring();                 description = postsnapshot.child("description").getvalue().tostring();                 location = postsnapshot.child("location").getvalue().tostring();                 //this displays information reading data in                 system.out.println("title: " + title  +                         "description" + description + "location" + location);                  mdataset.add(new listitem(title, description, location, 0.00, 0.00));               }          }     });     // if remove above code , put this, recycleview displays information     (int = 0; i<20; i++) {         string name ="this element #" + i;         mdataset.add(new listitem(name, "description", "location", 0.00, 0.00));     } } 

adapter class:

public class myadapter extends recyclerview.adapter<myadapter.viewholder> {     private static final string tag = "myadapter";     private list<listitem> mdataset;     /**      * provide reference type of views using (custom viewholder)      */     public static class viewholder extends recyclerview.viewholder {         private final textview textview;         private final imageview imageview;         private final textview textviewlocation;          public viewholder(view v) {             super(v);             // define click listener viewholder's view.             v.setonclicklistener(new view.onclicklistener() {                 ...             });             textview = (textview) v.findviewbyid(r.id.startupname);             textviewlocation = (textview) v.findviewbyid((r.id.startuplocation));             imageview = (imageview) v.findviewbyid(r.id.startupimage);         }          public textview gettextview() {             return textview;         }         public textview gettextviewlocation() {             return textviewlocation;         }         public imageview getimageview() {             return imageview;         }      }    //    when try send data received firebase, prints out [ ] if use random data created, works               public myadapter(list<listitem> dataset) {         system.out.println("the dataset " + dataset);         mdataset = dataset;     }      // create new views (invoked layout manager)     @override     public viewholder oncreateviewholder(viewgroup viewgroup, int viewtype) {         // create new view.         view v = layoutinflater.from(viewgroup.getcontext())                 .inflate(r.layout.row_item, viewgroup, false);          return new viewholder(v);     }      // replace contents of view (invoked layout manager)     @override     public void onbindviewholder(viewholder viewholder, final int position) {         log.d(tag, "element " + position + " set.");          // element dataset @ position , replace contents of view element         ...      }      // return size of dataset (invoked layout manager)     @override     public int getitemcount() {         return mdataset == null ? 0 : mdataset.size();     } } 

this picture of recyclerview random data

this picture of recyclerview data firebase

does have idea why happening, why data firebase not showing up?

thanks

in oncreate asynchronously go data - might take time. in meantime program flow moves along , set recycler in oncreateview, happens before response data, , result mdataset still without values. while after result , put in mdataset, don't see place notify recyclerview change.

so either have defer setting recyclerview until after results or notify recyclerview data set update once it.


Comments

Popular posts from this blog

php - Admin SDK -- get information about the group -

Python Error - TypeError: input expected at most 1 arguments, got 3 -

dns - How To Use Custom Nameserver On Free Cloudflare? -