मेरे ऐप में प्रत्येक उपयोगकर्ता मित्र अनुरोध भेज सकता है और प्राप्त कर सकता है। जब उपयोगकर्ता अपने दोस्तों के अनुरोधों की जांच करता है, तो मैं चाहता हूं कि ऐप प्रत्येक उपयोगकर्ता के माध्यम से जाए जिसने उसे एक मित्र अनुरोध भेजा और Realtime Database
से अपनी जानकारी पुनर्प्राप्त की।फ़ायरबेस - प्रत्येक उपयोगकर्ता के डेटा को एक सूची में पुनर्प्राप्त करने का प्रयास
public void check_For_Friends_And_Requests(){
String loggedUser=SaveSharedPreference.getLoggedEmail(getApplicationContext());
final DatabaseReference mDatabase= FirebaseDatabase.getInstance().getReference();
final DatabaseReference userRef=mDatabase.child("Users").child(loggedUser);
userRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()){
final List<User> friendRequestsReceived_UserList=new ArrayList<>();
for (DataSnapshot postSnapshot: dataSnapshot.child("friend_requests_received").getChildren()) {
final String senderEmail=postSnapshot.getKey();
Toast.makeText(getApplicationContext(),
senderEmail, Toast.LENGTH_SHORT).show();
if (senderEmail!=null){
mDatabase.child("Users").child(senderEmail).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Toast.makeText(getApplicationContext(),
dataSnapshot.child("name").getValue(String.class), Toast.LENGTH_SHORT).show();
friendRequestsReceived_UserList.add(
new User(
senderEmail,
dataSnapshot.child("name").getValue(String.class),
dataSnapshot.child("level").getValue(Integer.class),
dataSnapshot.child("skill").getValue(Double.class)));
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
UserListAdapter friendRequestsReceived_Adapter =
new UserListAdapter(getApplicationContext(),
R.layout.friend_requests_received_listview_row,
friendRequestsReceived_UserList);
friendRequestsReceived_ListView.setAdapter(friendRequestsReceived_Adapter);
}
else
connectionErrorGoToMain();
}
@Override
public void onCancelled(DatabaseError databaseError) {
connectionErrorGoToMain();
}
});
}
मैं इस कोड 2 ValueEventListeners
में है:
इस आदेश यह पूरा करने में मेरी कोड है। मैं उपयोगकर्ता की जानकारी को आंतरिक में सूची में जोड़ता हूं। समस्या यह है कि इस प्रक्रिया के अंत में सूची खाली है।
मैं इस जानकारी का उपयोग कर इन पंक्तियों के साथ एक सूची दृश्य को भरने के लिए करना चाहते हैं:
UserListAdapter friendRequestsReceived_Adapter =
new UserListAdapter(getApplicationContext(),
R.layout.friend_requests_received_listview_row,
friendRequestsReceived_UserList);
friendRequestsReceived_ListView.setAdapter(friendRequestsReceived_Adapter);
जब मैं उन्हें innner श्रोता के अंदर डाल दिया, यह ठीक काम करता है, लेकिन मैं अनुकूलक स्थापित करने के लिए नहीं करना चाहते हैं सूची में प्रत्येक उपयोगकर्ता के लिए, केवल for
लूप के बाद।
मैं अपने डेटाबेस संरचना के साथ एक स्क्रीनशॉट (मैं मानकों के सभी प्राप्त करने की आवश्यकता नहीं है) संलग्न कर रहा हूँ:
मुझे तुम्हारी जरूरत है देखने के लिए अपने Firebase डेटा संरचना –
@ILAYS_Kerbal मैं एक स्क्रीनशॉट –
जोड़ दिया है सब आप कर सकते हैं .... कक्षा उपयोग { सूची friendReuqest = नए तरह प्रत्येक वस्तु के साथ स्टोर सूची है सारणी सूची(); स्ट्रिंग नाम; } और आपके ओन्डाटा परिवर्तन में श्रोता मित्र पर एक नेस्टेड क्वेरी करें रिक्वेस्ट बच्चे और डेटा पास करें स्नैपशॉट करें और फिर अपने मॉडल पर सेट करें, पहले सूची प्राप्त करें और फिर अपने मॉडल में सूची जोड़ें और इसे उपयोगकर्ता सूची में रखें डेटा स्नैपशॉट.getValue (उपयोगकर्ता। कक्षा), –