Code: Select all
public class UsersActivity extends AppCompatActivity {
private List userList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
userList = new ArrayList();
getUserCount();
Dann < /p>
private void readUserCountData(Query query, UsersActivity.AllUsersCount listener) {
listener.onStart();
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
listener.onComplete(dataSnapshot);
} else { // dataSnapshot doesn't exist
Log.e(TAG, "dataSnapshot doesn't exist!!!");
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, databaseError.getMessage());
listener.onFailure();
}
});
}
private void getUserCount() {
ref = mFirebaseDatabase.getReference("USERS");
query = ref.orderByValue().equalTo(true);
// Completion Handler for Lookups
readUserCountData(query, new UsersActivity.AllUsersCount() {
@Override
public void onComplete(DataSnapshot dataSnapshot) {
int playerIndex = 0;
// Clear the List
userList.clear();
// Determine the number of users
numUsers = (int) dataSnapshot.getChildrenCount();
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
String userId = snapshot.getKey();
setUsername(userId, playerIndex); //
Der nächste Fertigstellungshandler, mit dem der Benutzername von Benutzern nach Abschluss der obigen Funktion aufgerufen wird: < /p>
private interface UserUsernameCallback {
void onComplete(DataSnapshot dataSnapshot);
void onStart();
void onFailure();
}
private void readUsernameData(Query query, UsersActivity.UsernameCallback listener) {
listener.onStart();
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
listener.onComplete(dataSnapshot);
} else { // dataSnapshot doesn't exist
Log.e(TAG, "dataSnapshot doesn't exist!!!");
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, databaseError.getMessage());
listener.onFailure();
}
});
}
private void setPlayerUsername(final String userId, final String userAliasId, final int playerIndex) {
userReference = mFirebaseDatabase.getReference("Users");
userQuery = userReference.child(userId).child("username");
// Completion Handler
readPlayerUsernameData(userQuery, new UsersActivity.UsernameCallback() {
@Override
public void onComplete(DataSnapshot dataSnapshot) {
String username = (String) dataSnapshot.getValue();
// Create the UserResult object with users username
UserResults user = new UserResults(username);
// Add them to the list
userList.add(user);
// Load users results
for (int i = 0; i < gameList.size(); i++) {
setPlayerPicks(userId, userIndex, gameList.get(i).getKey(), i);
}
}
}
}
< /code>
Als nächstes heißt die SetUserPicks: < /p>
private interface UserPicksCallback {
void onComplete(DataSnapshot dataSnapshot);
void onNoResult();
void onStart();
void onFailure();
}
private void readUserPicksCallback(Query query, UsersActivity.UserPicksCallback listener) {
listener.onStart();
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
listener.onComplete(dataSnapshot);
} else { // dataSnapshot doesn't exist
listener.onNoResult();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, databaseError.getMessage());
//
listener.onFailure();
}
});
}
private void setUserPicks(final String userId, final int playerIndex, final String gameId, final int pickIndex) {
userPicksReference = mFirebaseDatabase.getReference("USERPICKS");
userPicksQuery = userPicksReference.child(currPool).child(userId).child(String.valueOf(currWeek)).child(gameId);
// Completion Handler for Player Picks Lookups
readPlayerPicksCallback(userPicksQuery, new UsersActivity.UserPicksCallback() {
@Override
public void onComplete(DataSnapshot dataSnapshot) {
// Set the Players Picks Info here
playerList.get(playerIndex).setUserPicks(dataSnapshot, pickIndex);
setPickInfo(playerIndex, pickIndex);
}
}
}
< /code>
Alles wird aus Firebase abgerufen, aber wie ich bereits sagte, sind einige der Benutzerauswahl im Diagramm bösartig! Die angezeigten Ergebnisse, die nicht mit den tatsächlichen Daten in Firebase übereinstimmen.>