Android Java получает доступ к объектам базы данных ROOM - PullRequest
0 голосов
/ 30 октября 2019

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

Из базы данных я получаю объект "LiveData >" со всеми "Player" вмой стол. У каждого игрока есть Имя и Цена.

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

public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == NEW_WORD_ACTIVITY_REQUEST_CODE && resultCode == RESULT_OK) {

       // Add a New Player to the Database
            int preis = data.getExtras().getInt("EXTRA_REPLY_PREIS");
            String name = data.getExtras().getString("EXTRA_REPLY_NAME");
            Player player = new Player(name, preis);
            mPlayerViewModel.insert(player);

      // Populate the TextView "durchschnitt" with the average Value of all players, calculated in durchschnittspreis()
            TextView durchschnitt = findViewById(R.id.tvPreis);
            LiveData<List<Player>> alleSpieler = mPlayerViewModel.getAllPlayers();
            durchschnitt.setText("" + durschnittspreis(alleSpieler));

        } else {
            Toast.makeText(
                    getApplicationContext(),
                    R.string.empty_not_saved,
                    Toast.LENGTH_LONG).show();
        }
    }
 public int durschnittspreis(LiveData<List<Player>> players) {
        int durchschnittspreis = 0;
        int preis = 0;
        for (int i = 0; i < players.getValue().size(); i++) {
            preis = preis + players.getValue().get(i).getPreis();
            System.out.println(preis);
            durchschnittspreis = preis / players.getValue().size();
        }
        return durchschnittspreis;
    }

1 Ответ

0 голосов
/ 30 октября 2019

У меня недостаточно репутации, чтобы комментировать, но вы пытались изменить условие цикла в функции durschnittspreis, например:

for (int i = 0; i <= players.getValue().size(); i++)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...