【发布时间】:2023-03-10 05:57:01
【问题描述】:
我使用RecyclerView 来显示从Web 服务解析后检索到的数据。问题是notifydatasetchanged 根本不起作用。为了解决这个问题,我再次设置适配器。
我在使用这种技术时遇到了两个问题:
再次设置新适配器时屏幕闪烁。
-
回收站视图也指向回收站视图的第一项。 (我只想在现有列表的末尾追加新数据。数组列表大小正在更新。但唯一的问题是列表从第零位开始。)
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_book_mag_list_child, container, false); recyclerView = (RecyclerView) view.findViewById(R.id.bookMagRecyclerViewList); bookMagDataList = new ArrayList<>(); adapter = new BookMagListRecyclerViewAdapter(getActivity(), bookMagDataList); recyclerView.setAdapter(adapter); LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity()); //linearLayoutManager.setStackFromEnd(true); recyclerView.setLayoutManager(linearLayoutManager); recyclerView.setOnScrollListener(new EndlessRecyclerScrollListener(linearLayoutManager) { @Override public void onLoadMore(int current_page) { Log.d("Do Something", "Do Something" + current_page); params.setStart("" + current_page); dataModel.init(params); } }); return view; } @Override public void update() { if (dataModel.getFragmentData(subScreenId) != null) { bookMagDataList = dataModel.getFragmentData(subScreenId); Log.d("MyDataListSize: ", "" + bookMagDataList.size()); adapter = new BookMagListRecyclerViewAdapter(getActivity(), bookMagDataList); recyclerView.setAdapter(adapter); } }
请检查是什么问题,如果可以解决,请告诉我。
【问题讨论】:
-
我有更好的办法。只需将新数据添加到
Adapter class中的旧列表并从中调用notifyDataSetChanged();。 -
我也这样做了。我们在列表视图中所做的相同。你用过回收站视图吗?
-
如果您希望我们解决问题,请显示问题,而不是解决方法
-
是的,回收站视图也是如此
-
我有一个数组列表,每次我搜索列表时都有新数据。所以它根本没有更新。
标签: android android-recyclerview notifydatasetchanged