在recyclerview中的okhttp websockets消息

时间:2018-04-22 00:28:01

标签: android websocket android-recyclerview recycler-adapter

我有一个websocket将数据添加到recyclerview的工作实现,但我的问题是它添加的项目太多而且会降低应用程序的性能。当我添加项目时,它们将被添加到UI线程中。我只在列表中保留最多15个项目。添加新项目后,将删除第16项。 RxJava可观察对象会更好吗?或者我应该只将每10个项目添加到列表中并忽略添加的其他1000个项目?或者是否有任何其他建议可以提高连续添加项目的性能?

1 个答案:

答案 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
        })
    }

}