UI刷新会比数据库查询速度快

我想在一个fragment创建的时候,判断当前recyclerview获取到的列表是不是空的,是空的,就让一个控件不可见,否则,可见。

可是,因为UI刷新是比数据库查询速度快的,数据库查询是在后台线程做的。因此无论我在fragment的onActivityCreated或onStart里检测当前列表,都是快于数据库查询,因此一开始控件总是检测到列表为空是可见的。正确做法是放在observe里和crime的更新一起判断。

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        binding.crimeRecyclerview.adapter = mAdapter//
        crimeListViewModel.crimeListLiveData.observe(
            viewLifecycleOwner,
            { crimes ->
                crimes?.let {
                    if (crimes.isNotEmpty()) binding.remindAdd.visibility = View.GONE
                    else binding.remindAdd.visibility = View.VISIBLE
                    mAdapter.submitList(crimes)//有更新就提交给adapter
                }
            }
        )
    }

 

posted @ 2021-06-01 14:04  ou尼酱~~~  阅读(141)  评论(0)    收藏  举报