E / RecyclerView: адаптер не подключен; Пропуск макета Ошибка 17 - PullRequest
0 голосов
/ 10 ноября 2018

Продолжайте получать следующую ошибку:

E/RecyclerView: No adapter attached; skipping layout. 

Как вы можете видеть ниже, у меня установлен адаптер, но в методе OnDataChange() Я думаю, что это может быть проблемой, так как он должен быть в методе OnCreate(), но я не могу его исправить.

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

        RecyclerView = (RecyclerView) findViewById(R.id.recycler_view);
        RecyclerView.setHasFixedSize(true);
        RecyclerView.setLayoutManager(new LinearLayoutManager(this));

    ProgressCircle = findViewById(R.id.progress_circle);

    mUploads = new ArrayList<>();

    DatabaseRef = FirebaseDatabase.getInstance().getReference("uploads");

    DatabaseRef.addValueEventListener(new ValueEventListener() {

        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
                UploadClass upload = 
       postSnapshot.getValue(UploadClass.class);
                mUploads.add(upload);
            }
            Adapter = new ImageAdapter(JudgeActivity.this, mUploads);
            ProgressCircle.setVisibility(View.INVISIBLE);
            RecyclerView.setAdapter(Adapter);
         }

1 Ответ

0 голосов
/ 11 ноября 2018

Вы установили адаптер, но сделали это слишком поздно. Представление загружено без адаптера, потому что вы ожидаете Firebase.

В идеале вы должны сначала установить свой адаптер, поэтому удалите параметр mUploads в конструкторе.

@Override
protected void onCreate(Bundle savedInstanceState) {
    recyclerView = (RecyclerView) find...
    recyclerView.setAdapter(new ImageAdapter(this));
    ...
}

Изначально у адаптера не будет данных, но у RecyclerView будет адаптер, решающий вашу проблему.

Вы можете установить данные позже, если вы сохраняете экземпляр вашего адаптера, вы можете просто:

adapter.setUploads(mUploads)

в вашем звонке из Firebase.

...