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