I'm currently making a restaurant menu application and I followed some online tutorials where the guy was able to display what was in his realtime firebase in his application. Currently, I am able to add new menu items to my database through my application (reflected in my database itself) but within the app itself, I can't actually retrieve the database. Are there any errors in my code? Any help would be greatly appreciated!
'''
EditText editTextItemName, editTextPrice;
Spinner spinnerSection;
ListView ListViewItems;
Button buttonMainMenu, buttonAddItem;
List<Items> listItems;
DatabaseReference databaseItems;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
databaseItems = FirebaseDatabase.getInstance().getReference("items");
listItems = new ArrayList<>();
//ItemActivity ItemAdapter = new ItemActivity(Main2Activity.this,listItems);//
//ListViewItems.setAdapter(ItemAdapter);//
buttonMainMenu = (Button) findViewById(R.id.buttonMainMenu);
buttonMainMenu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openMainActivity();
}
});
buttonAddItem = (Button) findViewById(R.id.buttonAddItem);
editTextItemName = (EditText) findViewById(R.id.editTextItemName);
editTextPrice = (EditText) findViewById(R.id.editTextPrice);
spinnerSection = (Spinner) findViewById(R.id.spinnerSection);
ListViewItems = (ListView) findViewById(R.id.ListViewItems);
buttonAddItem.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
addItems();
}
});
ListViewItems.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
Items Items = listItems.get(i);
showUpdateDeleteDialog(Items.getItemsId(), Items.getItemName());
return true;
}
});
}
@Override
protected void onStart() {
super.onStart();
databaseItems.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
listItems.clear();
for (DataSnapshot itemSnapshot : dataSnapshot.getChildren()) {
Items items = itemSnapshot.getValue(Items.class);
listItems.add(items);
}
ItemActivity adapter = new ItemActivity(Main2Activity.this, listItems);
ListViewItems.setAdapter(adapter);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
throw databaseError.toException();
}
});
}
private void addItems(){
String Name = editTextItemName.getText().toString().trim();
String Price = editTextPrice.getText().toString().trim();
String Section = spinnerSection.getSelectedItem().toString();
if (ItemName.isEmpty()) {
editTextItemName.setError("Item Name can't be empty");
editTextItemName.requestFocus();
return;
}
if (Price.isEmpty()) {
editTextPrice.setError("Price can't be empty");
editTextPrice.requestFocus();
return;
} else {
String id = databaseItems.push().getKey();
Items items = new Items(id, ItemName, Section, Price);
databaseItems.child(id).setValue(items);
Toast.makeText(this, "Item Added", Toast.LENGTH_LONG).show();
}
}
public void openMainActivity(){
Intent intent = new Intent(this,MainActivity.class);
startActivity(intent);
}
private void showUpdateDeleteDialog(final String ItemsId, String ItemName) {
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
LayoutInflater inflater = getLayoutInflater();
final View dialogView = inflater.inflate(R.layout.dialog_update_items, null);
dialogBuilder.setView(dialogView);
final EditText editTextItemName = (EditText) dialogView.findViewById(R.id.editTextItemName);
final EditText editTextPrice = (EditText) dialogView.findViewById(R.id.editTextPrice);
final Spinner spinnerSection = (Spinner) dialogView.findViewById(R.id.spinnerSection);
final Button buttonUpdateItem = (Button) dialogView.findViewById(R.id.buttonUpdateItem);
final Button buttonDeleteItem = (Button) dialogView.findViewById(R.id.buttonDeleteItem);
dialogBuilder.setTitle(ItemName);
final AlertDialog b = dialogBuilder.create();
b.show();
buttonUpdateItem.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String ItemName = editTextItemName.getText().toString().trim();
String ItemPrice = editTextPrice.getText().toString().trim();
String ItemSection = spinnerSection.getSelectedItem().toString();
if (ItemName.isEmpty()) {
editTextItemName.setError("Item Name can't be empty");
editTextItemName.requestFocus();
return;
}
if (ItemPrice.isEmpty()) {
editTextPrice.setError("Price can't be empty");
editTextPrice.requestFocus();
return;
}
else updateItems(ItemsId, ItemName, ItemSection, ItemPrice);
}
});
buttonDeleteItem.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
deleteItems(ItemsId);
}
});
}
private boolean updateItems(String id, String Name, String Section, String Price){
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("items").child(id);
Items items = new Items(id, Name, Section, Price);
databaseReference.setValue(items);
Toast.makeText(this, "Item Updated", Toast.LENGTH_LONG).show();
return true;
}
private void deleteItems(String ItemsId) {
DatabaseReference drItems = FirebaseDatabase.getInstance().getReference("items").child(ItemsId);
drItems.removeValue();
Toast.makeText(this, "Item Deleted", Toast.LENGTH_LONG).show();
}
} '''

