Вы должны установить адаптер и менеджер компоновки в OnCreate
, так как такие ошибки возникают при выполнении этих операций с задержкой. Если вы попробуете это в обработчике postDelayed
, вы получите ту же ошибку.
Что-то, на что стоит обратить внимание, вы должны переместить и настройку адаптера, и настройку менеджера компоновки вне отложенного обратного вызова onResponse
. Если вы просто сделаете первое, вы получите ошибку:
No layout manager attached; skipping layout.
Вы также переинициализируете свой адаптер после его установки. Вместо этого просто установите данные в адаптер. Но вы должны сначала переместить свой код за пределы отложенных методов.
Итак, переместите код настройки адаптера и диспетчера за пределами отложенного обратного вызова onResponse
к действию onCreate()
, как это
recyclerView = findViewById(R.id. recyclerview);
adapter = new RecyclerAdapter(new ArrayList<NewModel>());
recyclerView.setAdapter(adapter);
LinearLayoutManager linearLayoutManager2 = new LinearLayoutManager(getApplicationContext(), LinearLayoutManager.HORIZONTAL, false);
recyclerView.setLayoutManager(linearLayoutManager2);
recyclerView.setItemAnimator(new DefaultItemAnimator());
Затем создайте метод setData()
в своем адаптере вот так
public void setData(ArrayList<NewModel> list) {
this.list = list;
}
Затем в onResponse () сделайте это для обновления данных.
adapter.setData(newModels);
adapter.notifyDataSetChanged();