У меня есть цикл for, который создает места. Я пытаюсь проверить, было ли место уже зарегистрировано (забронировано) в нашей базе данных, поэтому, когда я инициирую место, я хочу попасть в свою базу данных и проверить, есть ли оно уже там, поэтому я вставил метод с именем look внутри этих двух для циклы, как это
for (i = 0; i < maxRow; i++) {
for (j = 0; j < maxColumn; j++) {
final SeatMo seat = new SeatMo();
seat.row = i;
seat.column = j;
seat.status = 1;
look(seat,i,j)
seatTable[i][j] = seat;
}
}
Метод выглядит там, где ссылка, когда я сохранил место в базе данных, я назвал ребенка по определенному месту, которое было выбрано, например, col: 2 строка: 3, вот метод look
private void look(final SeatMo seat, final int a, final int b) {
databaseRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.hasChild("col:" + i + " row:" + j)) {
seat.status = 0;
} else {
seat.status = 1;
}
} @Override
public void onCancelled(DatabaseError databaseError) {}
});
}
Я хочу, чтобы он проверял каждое место во время инициализации места, но по какой-то причине, которая, я надеюсь, вы может найти в коде о том, что при вызове метода look ссылка пропускается (полностью databaseRef). У меня вопрос: что может быть причиной пропуска ссылки и как я могу убедиться, что она не пропускается?
DatabaseRef объявлен в методе Oncreate, это поле
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_seats); if(getSupportActionBar() != null) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
} currUser = FirebaseAuth.getInstance().getCurrentUser();
Intent callingIntent = getIntent();
maxC = Integer.valueOf(callingIntent.getStringExtra("col"));
maxR = Integer.valueOf(callingIntent.getStringExtra("row"));
decks = Integer.valueOf(callingIntent.getStringExtra("deck"));
fare = Double.valueOf(callingIntent.getStringExtra("fare"));
driver = callingIntent.getStringExtra("id");
destination = callingIntent.getStringExtra("dest"); databaseRef = FirebaseDatabase.getInstance().getReference("coach-drivers" + "/" + driver + "/" + "clients" ); initSeatTable(maxC,maxR);
selectedSeats = new ArrayList<>();
mMovieSeatView1= (MovieSeatView) findViewById(R.id.seat_view_one);
deck = (Spinner) findViewById(R.id.top_bottom);
mMovieSeatView1.setSeatTable(seatTable);
mMovieSeatView1.setPresenter(this); }
Ссылка имеет правильный маршрут
Попытка изменить маршрут на ссылку так:
databaseRef = FirebaseDatabase.getInstance().getReference().child("coach-drivers").child(driver).child("clients");
до сих пор не получается к методам onDataChange () и onCancel
Это структура Json моей базы данных.
{
"coach-drivers": {
"iiiiiiiiiiiiiii": {
"clients": {
"col:3 row:2": "one",
"col:3 row:1:"one",
"col:1 row:3" : "one"
}
}
} }
iiiiiiiiiii для driverId, представленного полем драйвера, инициированным в Метод OnCreate
, решенный с помощью CLOUD FIRESTORE, по-прежнему не знает, почему ссылка на FIREBASE была пропущена, хотя