我有一个websocket将数据添加到recyclerview的工作实现,但我的问题是它添加的项目太多而且会降低应用程序的性能。当我添加项目时,它们将被添加到UI线程中。我只在列表中保留最多15个项目。添加新项目后,将删除第16项。 RxJava可观察对象会更好吗?或者我应该只将每10个项目添加到列表中并忽略添加的其他1000个项目?或者是否有任何其他建议可以提高连续添加项目的性能?
答案 0 :(得分:0)
我遇到了同样的问题,您可以将LifeCycleOwner和viewModel传递给适配器,然后可以得到类似的东西
class ViewHolder(
itemView: View,
val lifecycleOwner: LifecycleOwner,
val viewModel: MainViewModel
) : RecyclerView.ViewHolder(itemView) {
private var previousLiveData: LiveData<MyData>? = null
fun bindData(item: Item) {
val textView = itemView.findViewById<TextView>(R.id.myTextView)
previousLiveData?.removeObservers(lifecycleOwner)
previousLiveData = viewModel.getInfoFromLiveData(item.data)
previousLiveData?.observe(lifecycleOwner, Observer {
textView.text = it.webSocketData
})
}
}