Получение списка продуктов из firebase Android Studio в реальном времени

#firebase #firebase-realtime-database

#firebase #firebase-база данных в реальном времени

Вопрос:

Я пытаюсь извлечь все продукты из структуры продукта в firebase в режиме реального времени. Когда я запускаю приложение, происходит сбой, но когда я комментирую «Product product = childSnapShot.GetValue(Product.class ); » он не извлекает никаких данных. Также, когда я пытаюсь извлечь данные из структуры пользователей, это работает.

Почему это происходит?

 public class User_products_list extends AppCompatActivity {


    private ListView listView;

    private FirebaseDatabase database;
    private DatabaseReference myRef;

    //Define Array list
    private ArrayList<String> arrayList = new ArrayList<>();

    // Define a ListView to display the data
    private ListView listViewdata;

    // Define an ArrayAdapter for the list
    private ArrayAdapter<String> arrayAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.list_data);

       
        myRef = FirebaseDatabase.getInstance().getReference();
        myRef = myRef.child("Products");

        
        listViewdata = (ListView) findViewById(R.id.list_View);

        // Set the ArrayAdapter to the ListView
        arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arrayList);
        listViewdata.setAdapter(arrayAdapter);


        myRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {

                for(DataSnapshot childSnapShot : snapshot.getChildren()) {
                    
                    Product product = childSnapShot.getValue(Product.class);
                    arrayList.add(product.getName());
                    arrayList.add(product.getDescription());
                    arrayAdapter.notifyDataSetChanged();
                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {

            }
        });
        
    }
 

Комментарии:

1. 1) «сбой приложения» Пожалуйста, найдите сообщение об ошибке и трассировку стека в выводе logcat и включите их оба в свой вопрос. 2) Мы не видим ваш Product класс. 3) Никогда не оставляйте onCancelled пустым. Как минимум, так и должно быть public void onCancelled(@NonNull DatabaseError databaseError) { throw databaseError.toException(); } .

2. Пожалуйста, предоставьте информацию, которую запрашивал Фрэнк ван Пуффелен, и, пожалуйста, также ответьте с помощью @.