Упрощенный вопрос к моей проблеме:
Моя новая, более информированная проблема заключается в том, что мой 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](https://i.stack.imgur.com/N2sA4.png)
Так что моя проблема в том, что по какой-то причине 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;
Но это не тот случай