Я пытаюсь получить список моих последних активных пользователей в моем приложении.Я храню их UID в виде строки в моей базе данных, как в базе данных:
lastActiveUsers:uid1 uid2 ... etc.
Теперь мне нужно показать список пользователей с UIds в этой строке, но при использовании вложенного прослушивателяЯ не знаю, как это сделать, это мой код:
это мой код:
public void getStudents() {
if (!list.isEmpty()) {
list.clear();
}
lastActiveUsersReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String lastActiveUsers = (String) dataSnapshot.getValue();
final String[] lastActiveUsersArray = lastActiveUsers.split(" ");
for(final String userId : lastActiveUsersArray){
usersReference.orderByKey().equalTo(userId).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String localCurrentUserUid = FirebaseAuth.getInstance().getCurrentUser().getUid();
for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
User user = new User();
String points = "";
boolean admin = false, online = false;
String name = (String) dataSnapshot1.child("userName").getValue();
String email = (String) dataSnapshot1.child("userEmail").getValue();
String uid = dataSnapshot1.getKey();
if (dataSnapshot1.child("points").getValue() != null)
points = dataSnapshot1.child("points").getValue().toString();
String imageUrl = (String) dataSnapshot1.child("userImage").getValue();
String userType = (String) dataSnapshot1.child("userType").getValue();
if (dataSnapshot1.child("admin").getValue() != null)
admin = (boolean) dataSnapshot1.child("admin").getValue();
if (dataSnapshot1.child("online").getValue() != null) {
online = (boolean) dataSnapshot1.child("online").getValue();
/*if(online)
onlineUsersIndexes.add(list.size());//TODO : try to add this after solving its problem*/
}
int pointsInt;
try{
pointsInt = Integer.parseInt(points);
}
catch (Exception ex){
Log.v("pointsException", "exception is : " + ex);
pointsInt = 0;
}
Log.v("Sizee", "array size : " + lastActiveUsersArray.length
+ " , userId : " + userId + " , array : " + lastActiveUsersArray.toString());
if (userType.equals("طالب") && !uid.equals(localCurrentUserUid) && !inList(userId) && !online && name != null) {//TODO : think about allowing challenges against teachers and others and ask my friends about thier opinions in that
user.setAdmin(admin);
user.setOnline(online);
user.setName(name);
user.setPoints(pointsInt);
user.setImageUrl(imageUrl);
user.setEmail(email);
user.setUid(uid);
list.add(user);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
Toast.makeText(ChallengersActivity.this, "list size is : " + list.size(), Toast.LENGTH_SHORT).show();
recyclerAdapter.notifyDataSetChanged();
if (progressBar.getVisibility() != View.GONE)
progressBar.setVisibility(View.GONE);
if (swipeRefreshLayout.isRefreshing()) {
swipeRefreshLayout.setRefreshing(false);
}
if (list.size() == 0) {
noStudentsTv.setVisibility(View.VISIBLE);
noInternetConnectionText.setVisibility(View.GONE);
} else {
noStudentsTv.setVisibility(View.INVISIBLE);
noInternetConnectionText.setVisibility(View.GONE);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}