Пустой вид Recycler не обновляется новыми данными

Сначала я инициализирую адаптер адаптера recycler с пустым arraylist. Затем, после получения данных из API, я пытаюсь обновить адаптер по вызову, notifyDataSetChanged()но ни один из методов обратного вызова в моем адаптере не запускается

void initRecyclerView() 
    {     
            myList = new ArrayList<>();
            myRecyclerAdapter = new myRecyclerAdapter(getActivity(), myList, "");
            myRecyclerView.setAdapter(myRecyclerAdapter);
            linearLayoutManager = new LinearLayoutManager(getActivity());
            myRecyclerView.setHasFixedSize(true);
            myRecyclerView.setLayoutManager(linearLayoutManager);
    }

После получения данных из API я просто обновляю адаптер следующим образом:

void updateRecyclerView(ArrayList<Data> newList)
   {
        if (myList.isEmpty())
                    linearLayoutManager.removeAllViews();
                myList.clear();
                myList.addAll(newList);             
                myRecyclerAdapter.notifyDataSetChanged();
   }

android,android-recyclerview,recycler-adapter,

-1

Ответов: 3


3
void updateRecyclerView(ArrayList<Data> newList)
   {
//you don't have to removeviews
      //  if (myList.isEmpty())
                 //    linearLayoutManager.removeAllViews();
                myList.clear();
                myList.addAll(newList);             
                 myRecyclerAdapter.notifyDataSetChanged();
   }

1

Прежде всего, попробуйте установить диспетчер компоновки, а затем установите адаптер в список:

void initRecyclerView() 
{     
        linearLayoutManager = new LinearLayoutManager(getActivity());
        myRecyclerView.setHasFixedSize(true);
        myRecyclerView.setLayoutManager(linearLayoutManager);
        myList = new ArrayList<>();
        myRecyclerAdapter = new myRecyclerAdapter(getActivity(), myList, "");
        myRecyclerView.setAdapter(myRecyclerAdapter);
}

Также обратите внимание, что если вы хотите изменить набор данных или сообщить об этом изменениям адаптера, вы должны сделать это в своем основном потоке.

runOnUiThread(new Runnable() {
@Override
public void run() {
     myList.clear();
     myList.addAll(newList);             
     myRecyclerAdapter.notifyDataSetChanged();
}
});

1 принят

Я совершил самую дорогостоящую ошибку и размышлял о чем-то другом, вместо того, чтобы смотреть на него в другом аспекте.

У меня были SwipeRefreshLayoutобертывания RecyclerView.

Я должен был просто использовать setRefreshing(false)данные, загруженные через вызов API. Вместо этого я использовал setVisibility(VIEW.GONE) on mymSwipeRefreshLayout`.

Это изменение видимости SwipeRefreshLayoutвлияние RecyclerViewвнутри.

Надеюсь, никто не сделает эту ошибку. Возможно, кто-то может столкнуться с этой крошечной ошибкой, поэтому я отвечу на свой ответ в качестве принятого ответа.

андроид, андроид-recyclerview, перерабатывают адаптироваться,
Похожие вопросы