2017-05-01 4 views
-1

Ich versuche, Daten aus Firebase-Datenbank abrufen, wenn ich versuche, Daten zum allerersten Mal nach der Installation der App abrufen, wird nichts in Recycler angezeigt, aber wenn ich zurück und noch einmal drücken versuchen, Daten abzurufen, das richtig angezeigt, schlagen Sie mir geändert, die ich in meinem Code tun soll, so dass die Daten richtig im ersten VersuchDaten von Firebase-Datenbank wird nicht richtig angezeigt

Methode zur Rückkehr Arraylist

public ArrayList<SaveAddInformation> retrieve(){ 

    AdvertisementRef.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      for (DataSnapshot eventSnapshot : dataSnapshot.getChildren()) { 

       SaveAddInformation mModel = eventSnapshot.getValue(SaveAddInformation.class); 
       Log.d("DATA" ,""+ mModel); 
       adinfolist.add(mModel); 
      } 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 


    return adinfolist; 

} 

Adpater Klasse

Context c; 
ArrayList<SaveAddInformation> adinfolist; 

public MyAdapter(Context c, ArrayList<SaveAddInformation> adinfolist) { 
    this.c = c; 
    this.adinfolist = adinfolist; 
} 

@Override 
public MyViewholder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View v= LayoutInflater.from(c).inflate(R.layout.design_row,parent,false); 
    MyViewholder myViewholder=new MyViewholder(v); 

    return myViewholder; 
} 

@Override 
public void onBindViewHolder(MyViewholder holder, int position) { 
    SaveAddInformation save=adinfolist.get(position); 
    holder.titleTv.setText(save.getTitleS()); 
    holder.rentamt.setText(save.getRent_amount()); 
    holder.rentdays.setText(save.getRentDayS()); 
    holder.desc.setText(save.getDescriptionS()); 

    holder.setImage(getApplicationContext(), save.getImageuri()); 

    // holder.titleTv.setText((CharSequence) adinfolist.get(position)); 
} 

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

}

ViewHolder Klasse

public MyViewholder(View itemView) { 
    super(itemView); 
    titleTv=(TextView)itemView.findViewById(R.id.Titletextv); 

    rentamt=(TextView)itemView.findViewById(R.id.rent_amount); 
    rentdays=(TextView)itemView.findViewById(R.id.days_rent); 
    desc=(TextView)itemView.findViewById(R.id.descTV); 




} 

public void setImage(Context applicationContext, String imageuri) { 

    adimg=(ImageView)itemView.findViewById(R.id.ad_image); 

    // We Need TO pass Context 

    Picasso.with(applicationContext).load(imageuri).into(adimg); 



} 
+0

Firebase lädt Daten asynchron. Zu dem Zeitpunkt, an dem Sie "adinfolist" zurückgegeben haben, wurde noch nichts ausgefüllt. Siehe http://stackoverflow.com/questions/33203379/setting-singleton-property-value-in-firebase-listener –

+0

Eigentlich bin ich neu in der Android-Entwicklung können Sie bitte erarbeiten, was Sie in Bezug auf meinen Code sagen wollen. –

+0

@PriyankaKadam meine Antwort hat dir nicht geholfen? –

Antwort

0

Wenn Sie sicher sind, dass der Code keine Fehler hat, würde Ich mag Sie daran zu erinnern, dass Firebase Verbindungen async sind. Also das erste Mal die Funktion retrieve() gibt den Wert von ArrayList ist eigentlich leer. Was Sie tun können, ist adapter.notifyDataSetChanged() nach der For-Schleife in onDataChange() Methode aufrufen.

Verwandte Themen