从服务器(API REST),我可以获得具有每个项目的一些信息的项目(产品)列表。我在带有适配器的RecyclerView中映射该列表。在收到该列表之前,我将显示一个加载视图。
但是,我必须在每行中显示每个项目更多的信息,但是我只能通过另一个HTTP请求(每个项目)获取该信息,并发送该产品的ID。因此,我想用该信息异步填充每一行的UI(显示行时)。
如何更好地实现这一目标?我认为这与异步图像加载同样存在问题,因此我应该做一些诸如Picasso或Universal Image Loading之类的库。是不是
您知道任何图书馆可以帮助我吗?
提前致谢!
最佳答案
您可以使用RxJava库来实现。例如,在您的onBindViewHolder
方法中,您可能会执行以下操作:
Observable.fromCallable {
loadDataAsync(position, <other arguments you need>)
}.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe { loadedData ->
holder.setAdditionalData(loadedData)
}
当然,您必须跟踪每个订阅并在回收该项目后取消订阅,以防止内存泄漏。
无论如何,您可能应该修改您的API设计,并使服务器在一个请求/响应周期中发送所有数据,而不是为每个项目发送大量的小型HTTP请求。在这种情况下,您的问题就消失了。