यहाँ मेरा कार्य है:

private void getOrderID() {

    for (int i = 0; i < userID.size(); i++) {
        databaseReference.child(opearatorID).child(userID.get(i)).addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                for (DataSnapshot childSnapshot : dataSnapshot.getChildren()) {
                    keyStatusRelation.put(childSnapshot.getKey(),childSnapshot.getValue(Order.class).getStatus());
                }
                loadData();

            }

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

            }
        });

    }

}

डेटा फ़ायरबेस में लोड नहीं होने के कारण इस फ़्यूज़न को एक त्रुटि मिलती है

 public static void loadData() {

    for (int i=0;i<userID.size();i++){
        statusRefrenceLiving.child(userID.get(i)).addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                for (DataSnapshot childSnapshot : dataSnapshot.getChildren()) {
                    Order order = childSnapshot.getValue(Order.class);
                    if(keyStatusRelation.get(childSnapshot.getKey()).equals("0")||keyStatusRelation.get(childSnapshot.getKey()).equals("2")){
                        bookingmList.add(order);
                        bookingrecyclerView.setAdapter(bookingAdapter);

                    }
                    if(keyStatusRelation.get(childSnapshot.getKey()).equals("1")){
                        bookedmList.add(order);
                        bookedrecycleView.setAdapter(bookedAdapter);

                    }
                    if(keyStatusRelation.get(childSnapshot.getKey()).equals("3")){
                        LivingmList.add(order);
                        LivingrecycleView.setAdapter(livingAdapter);

                    }

                }

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

            }
        });

    }

}

यहाँ लॉगकैट है

प्रक्रिया: com.teepe.teepestaysmasterapp, पीआईडी: 6867 .teepe.teepestaysmasterapp.MainActivity$4.onDataChange(MainActivity.java:187) com.google.firebase.database.core.ValueEventRegistration.fireEvent(com.google.firebase:firebase-database@@17.0.0:75) पर .google.firebase.database.core.view.DataEvent.fire(com.google.firebase:firebase-database@@17.0.0:63) com.google.firebase.database.core.view.EventRaiser$1.run( com.google.firebase:firebase-database@@17.0.0:55) android.os.Handler.handleCallback(Handler.java:751) पर android.os.Handler.dispatchMessage(Handler.java:95) पर android. os.Looper.loop(Looper.java:154) android.app.ActivityThread.main(ActivityThread.java:6077) पर java.lang.reflect.Method.invoke(Native Method) at com.and पर roid.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866) com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756) पर

यह लूपिंग है और केवल दूसरी पंक्ति में जा रहा है और onDataChange दर्ज नहीं कर रहा है, क्या कोई मुझे बता सकता है कि समस्या क्या है?

0
Chirag Gupta 16 जून 2019, 02:37

1 उत्तर

सबसे बढ़िया उत्तर

डेटा को Firebase से एसिंक्रोनस रूप से लोड किया जाता है। इसका मतलब है कि आपका मुख्य कोड जारी है, जबकि डेटा लोड किया जा रहा है। और फिर जब डेटा उपलब्ध होता है, तो आपके onDataChange को कॉल किया जाता है।

इसका मतलब है कि आप डिबगर के साथ onDataChange में प्रवेश नहीं कर सकते, क्योंकि डेटा अभी तक उपलब्ध नहीं है। यदि आप देखना चाहते हैं कि डिबगर में onDataChange में क्या होता है, तो विधि में पहली पंक्ति पर एक ब्रेकपॉइंट लगाएं, और डीबगर को जारी रखने दें। एक डेटा उपलब्ध है, onDataChange को कॉल किया जाएगा, और ब्रेकप्वाइंट हिट होगा।

0
Frank van Puffelen 16 जून 2019, 03:00