Recyclerview не показывает данные. В моем коде чего-то не хватает - PullRequest
0 голосов
/ 21 января 2020

Я новичок в Android. Это мой Java файл. Я просто хочу показать, что данные представляют собой переработчик, но когда я открываю их в эмуляторе, мое приложение вылетает. Помогите мне найти ошибку в моем коде.

private RecyclerView rview;
private MyAdapter adapter;
private ArrayList<Student> list;
private DatabaseReference reference;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_check_record);

    reference = FirebaseDatabase.getInstance().getReference("Student");

    rview = findViewById(R.id.recyclerview);
    list = new ArrayList<>();
    rview.setHasFixedSize(true);
    rview.setLayoutManager(new LinearLayoutManager(this));
    rview.addItemDecoration(new DividerItemDecoration(rview.getContext(),
            DividerItemDecoration.VERTICAL));
    adapter = new MyAdapter(this, list);
    rview.setAdapter(adapter);
    reference.addListenerForSingleValueEvent(listener);
}
ValueEventListener listener = new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        if (dataSnapshot.exists()){
            list.clear();
            for (DataSnapshot snapshot:dataSnapshot.getChildren()){

                Student s =dataSnapshot.getValue(Student.class);
                list.add(s);
            }
            adapter.notifyDataSetChanged();
        }
        else {
            Toast.makeText(CheckRecordActivity.this, "No Record Found", Toast.LENGTH_SHORT).show();
        }
    }

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

        Toast.makeText(CheckRecordActivity.this, databaseError.toString(), Toast.LENGTH_SHORT).show();
    }
};

}

1 Ответ

0 голосов
/ 21 января 2020

Настройте менеджер повторного просмотра следующим образом: -

final LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false);
rv.setLayoutManager(layoutManager);

Вы должны проверить 4 вещи,

  1. вы не должны инициализировать свой экземпляр firebase в вашем классе Application, например ( FirebaseApp.initializeApp (this) )
  2. Проверить, что ссылка DatabaseReference имеет значение null или нет
  3. Возвращено значение DataSnapshot или нет
  4. Проверить значение массива равно NULL или не

, если четыре значения равно нулю, то приложение может быть cra * sh.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...