Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Retrieved Data from Firebasedatabase and set into recyclierview Adapter

Tags:

android

I want to read the data from firebasedatabase and show that into recyclerview retrieve data form FirebaseDatabase by orderbychild method. I want to read data of that child who's email match with my useremail who is currently login from app .

This is my Firebase:

enter image description here

I have successfully completed the first part, but I am facing problems with second part how can I pass the retrieved data to recyclerview adapter.

For example whenever user login from [email protected] I read his location and ticket_no and show that data into recyclerview. I am facing problem with this line

programinglist.setAdapter(new myadapter(this,  modl1));

where should I pass my modl1 (ArrayList<model> modl1) to recyclerview.setadapter

public class recyclierview extends AppCompatActivity {
public  RecyclerView programinglist;
    DatabaseReference b1, b2;
    public ArrayList<model> modl1;
    @Override
    protected void onCreate(Bundle savedInstanceState)
 {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_recyclierview);
          programinglist = findViewById(R.id.my_recycler_view);
        programinglist.setLayoutManager(new LinearLayoutManager(this));
        modl1  =new ArrayList<model>();
      readdata(new firebasecallback() {
          @Override
          public void oncallback(ArrayList<model> list) {
              Log.v("aliraza" , "value oncalback" + list.get(0).getTicket_no());
          }
      });
}  

 private  void readdata(final firebasecallback firebasecallback)
    {
        b1= FirebaseDatabase.getInstance().getReference();
        b2=b1.child("tasks");
        b2.orderByChild("email").equalTo(MainActivity.email).addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {


                model m = new model();
                String location = dataSnapshot.child("location").getValue().toString();
                String tickeno = dataSnapshot.child("ticket_no").getValue().toString();
                Log.v("ALI", "family value " +location);
                Log.v("ALI", "family value " + tickeno);
                m.setLocation(location);
                Log.v("ALI", "location " +m.getLocation());
                m.setTicket_no(tickeno);
                modl1.add(m);
                Log.v("ALI", "family value " +modl1.get(0).getTicket_no());
                firebasecallback.oncallback(modl1);
            }

            @Override
            public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

            }

            @Override
            public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {

            }

            @Override
            public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });
        programinglist.setAdapter(new myadapter(this,  modl1));// where should i call this setadapter function of recyclierview.enter code here



    }
    private  interface firebasecallback
    {
        void oncallback( ArrayList<model> list);
    }
}
like image 886
Ali Raza Avatar asked Nov 26 '25 04:11

Ali Raza


1 Answers

Initialise your arraylist and adapter;

 public ArrayList<model> modl1=new ArrayList();
 private myadapter adapter;

In onCreate() method initialize your adapter with blank list and set adapter to recyclerview.

adapter=new myadapter(this,  modl1);
programinglist.setAdapter(adapter);

then create a method addItem() in your adapter.

public void addItem(model item){
   list.add(item); // add item to your adapter list
   notifyItemInserted(list.size());
 }

changes in onChildAdded() method

modl1.add(m); //remove this line 
 firebasecallback.oncallback(m);

 readdata(new firebasecallback() {
          @Override
          public void oncallback(model m) {
          modl1.add(m);
          adapter.add(m);
              Log.v("aliraza" , "value oncalback" + list.get(0).getTicket_no());

          }
      });

You can remove firebasecallback method,as there is no need of it, and directly add item to adapter in onChildAdded() method. Simply call readdata() method from onCreate()

private  void readdata()
    {
        b1= FirebaseDatabase.getInstance().getReference();
        b2=b1.child("tasks");
        b2.orderByChild("email").equalTo(MainActivity.email).addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {


                model m = new model();
                String location = dataSnapshot.child("location").getValue().toString();
                String tickeno = dataSnapshot.child("ticket_no").getValue().toString();
                Log.v("ALI", "family value " +location);
                Log.v("ALI", "family value " + tickeno);
                m.setLocation(location);
                Log.v("ALI", "location " +m.getLocation());
                m.setTicket_no(tickeno);
                modl1.add(m);
                Log.v("ALI", "family value " +modl1.get(0).getTicket_no());
                adapter.add(m);
            }

            @Override
            public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

            }

            @Override
            public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {

            }

            @Override
            public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });




    }

Hope this will help!!

like image 186
Nehal Godhasara Avatar answered Nov 27 '25 20:11

Nehal Godhasara



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!