Индекс вне границ при обратном вызове - PullRequest
0 голосов
/ 05 ноября 2018

Упрощенный вопрос к моей проблеме:

Моя новая, более информированная проблема заключается в том, что мой openGames.get (позиция) возвращает ноль

Так вот мой обратный звонок:

public interface WagerCallback {
    void onCallback(String wager);
}

.

public void getWager(int position, final WagerCallback wagerCallback) {
    FCGames.child(openGames.get(position)).child("wager").addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            wagerr = (double) dataSnapshot.getValue();
            String wagerD = Double.toString(wagerr);
            wage = wagerD.endsWith("0");

            wagerCallback.onCallback(wagerD);
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
        }
    });
}

FCGames определяется как: public DatabaseReference FCGames = database.getReference ("FCGames");

И мой openGames.get (позиция) - это список, который является частью адаптера RecyclerView. Итак, в моем представлении переработчика, я определил это:

String userName = mData.get(position);

Что является синонимом моего определения openGames, оно просто не записано. Для этого он хранит имя пользователя, создавшего игру, в качестве индекса игры.

Это имя пользователя также является именем узла, хранящегося в базе данных, например:

enter image description here

Так что моя проблема в том, что по какой-то причине openGames.get (position) в этом случае возвращает null, и я не уверен, почему. Я использую get (position) очень похожим образом, где он работает в моем классе RecyclerView следующим образом:

    @Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
    String userName = mData.get(position);
    holder.userName.setText(userName);
    holder.bind(mData.get(position), position, listener);

    fcl.getWager(position, new FlipCoinLobby.WagerCallback() {
        @Override
        public void onCallback(String wager) {
            holder.wager.setText(wager);
        }
    });

}

Так, например, в строке

String username = mData.get(position);

Эта строка использует функцию get (position), и она работает, но всего на несколько строк ниже она не работает в моем обратном вызове.

Надеюсь, это немного яснее, и я могу получить некоторую помощь.

Это моя ошибка:

java.lang.IndexOutOfBoundsException: индекс: 0, размер: 0

Если в данный момент все работает отлично, то

openGame.get(position) = Brent_MB;

Но это не тот случай

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...