Табло Firebase показывает избыточные имена пользователей и оценки - PullRequest
0 голосов
/ 26 декабря 2018

Я пытаюсь кодировать табло для моего приложения.Я сделал большую часть табло, но у меня есть одна проблема, которую я не могу исправить.Когда я изменяю баллы в моей базе данных Firebase, в рейтинге отображаются избыточные имена и баллы

Структура моей базы данных:

enter image description here

Табло до изменения:

enter image description here

Табло после изменения:

enter image description here

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ranking);

        String username = getIntent().getStringExtra("UserName");
        currentuser = username;
        un1 = (TextView)findViewById(R.id.textusernameplatz1);
        un2 = (TextView)findViewById(R.id.textusernameplatz2);
        un3 = (TextView)findViewById(R.id.textusernameplatz3);

        s1 = (TextView)findViewById(R.id.textscoreplatz1);
        s2 = (TextView)findViewById(R.id.textscoreplatz2);
        s3 = (TextView)findViewById(R.id.textscoreplatz3);

        databaseReference = FirebaseDatabase.getInstance().getReference("Users");
        databaseReference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                // username & score von Datenbank lesen
                for (DataSnapshot dsp : dataSnapshot.getChildren()) {
                    String userkey = dsp.getKey();
                    String scores = dsp.child("scorehigh").getValue().toString();
                    String userName = dsp.child("username").getValue().toString();
                    Integer scoresint = Integer.parseInt(scores);

                    RankingData rd = new RankingData(scoresint, userName);

                    rankingData.add(rd);
                    Collections.sort(rankingData);

                    }

                    // probleme bei refresh: Lösung evtl: exist() methode coden, damit
                // ein Username nicht doppel auftreten kann
                un1.setText(rankingData.get(0).getUsername());
                un2.setText(rankingData.get(1).getUsername());
                un3.setText(rankingData.get(2).getUsername());

                s1.setText(rankingData.get(0).getScore().toString());
                s2.setText(rankingData.get(1).getScore().toString());
                s3.setText(rankingData.get(2).getScore().toString());

            }
            @Override
            public void onCancelled(DatabaseError error) {

            }
        });

Мой другой класс:

public RankingData(Integer score, String username) {
    this.score = score;
    this.username = username;
}

public Integer getScore() {
    return score;
}

public void setScore(Integer score) {
    this.score = score;
}

public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}

@Override
public int compareTo(RankingData b){
    if(this.getScore() < b.getScore()){
        return 1;
    }
    if(this.getScore() > b.getScore()){
        return -1;
    }
return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...