I'm creating an android app which is used for hotel management.
I want to show the user, the number of rooms available in the form of spinner.
I'm storing the details(roomNumber, name address etc..) in google firebase.
If the user is logging in the app for first time then all the room numbers in spinner should be visible. But if the user has already booked a room then that room number should not be visible in spinner.
Here is the java code:
documentReference.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
if(documentSnapshot.exists()){
roomNumberDocument=documentSnapshot.getString("RoomNumber");
if(roomNumberDocument!=null){
for (int i = 100; i < 111; i++) {
if(Integer.parseInt(roomNumberDocument)==i){
continue;
}
roomNumbersList.add(Integer.toString(i));
}
}else{
//room numbers
roomNumbersList.add("100");
roomNumbersList.add("101");
roomNumbersList.add("102");
roomNumbersList.add("103");
roomNumbersList.add("104");
roomNumbersList.add("105");
roomNumbersList.add("106");
roomNumbersList.add("107");
roomNumbersList.add("108");
roomNumbersList.add("109");
roomNumbersList.add("110");
}
}
}
});
If the room is already booked then roomNumberDocument
will not be null else it will be null.
If the room is already booked then I will not add it into the ArrayList roomNumbersList
.
Here I'm setting up the adapter:
adapterRoomNumbers= new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, roomNumbersList);
adapterRoomNumbers.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnerRoomNumber.setAdapter(adapterRoomNumbers);
Here is the click listener for the spinner:
spinnerRoomNumber.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
strRoomNumber= adapterView.getItemAtPosition(i).toString();
Toast.makeText(context, ""+strRoomNumber, Toast.LENGTH_LONG).show();
Log.i(TAG, strRoomNumber);
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
The problem is that setOnItemSelectedListener()
is not called if I select any item in the spinner.
Because of that strRoomNumber
is getting null. I will use strRoomNumber
for storing it in the firebase database.
Here is my full code
What might be the problem?