RecyclerView 没有更新 OnPostExecute() 上的项目

提前向在座的各位问好。

在寻找问题的解决方案时,我一直在问题和疯狂之间徘徊,我已经投入了更多的时间来解决我的困境,现在我需要最了解该主题的人来帮助我。

正如下面我详细,我在做什么,或者至少试图做的是更新RecyclerView而我收集的是被保存在特定数据DB,并在list of elements

我将在 中绘制的数据,我RecyclerView通过以下方式rssparser获取,首先获取链接列表,稍后使用Jsoup获取图像和新闻文本。

碰巧这些使用与网络交互的函数必须在内部调用threads而不是 UI 的那些函数,很好,我相信我已经像多线程一样在那里创建了,并且很好的函数可以在我可以在一个异步任务。

我需要的另一件事progress bubble是维护此视图中的 直到线程处理完成。理想情况下,它可以实时工作,我已经做到了,但是通过将每个新元素添加到列表中并通知适配器新插入的项目,它对我不起作用。

任务结束时的处理,以及线程完成自己的工作,我不更新的RecyclerViewadapter.notifyDatasetChanged()两种,我不知道还有什么尝试,也许我有一些算法的错误。

下面我要放我的代码,我为我的足迹道歉,当然我留下了一些不必要的代码或评论。


一只甜甜圈
浏览 114回答 2
2回答

Cats萌萌

您没有 在方法中更新任何适配器数据onPostExecute()并调用 notifyDatasetChanged@Overrideprotected void onPostExecute(String result) {&nbsp; &nbsp;adapter.notifyDataSetChanged();&nbsp; &nbsp;isAlreadyRefresh = true;&nbsp; &nbsp;swipeView.setRefreshing(false);}adapter.notifyDatasetChanged() 仅在更新适配器数据时才需要调用。我看到您已在onRefresh()方法中更新了您的适配器数据,但您还没有调用adapter.notifyDatasetChanged(). 所以你需要添加notifyDatasetChanged,如下面的代码所示。@Overridepublic void onRefresh() {&nbsp; &nbsp; if (!isAlreadyRefresh) {&nbsp; &nbsp; &nbsp; &nbsp; swipeView.setRefreshing(true);&nbsp; &nbsp; &nbsp; &nbsp; swipeView.postDelayed(new Runnable() {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; public void run() {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fetchNews();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; isAlreadyRefresh = true;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; adapter.setmValues(news);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; adapter.notifyDatasetChanged() // <- Add this&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }, 1000);&nbsp; &nbsp; } else&nbsp; &nbsp; &nbsp; &nbsp; swipeView.setRefreshing(false);}这可能是您RecyclerView未更新的原因之一
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java