override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
val view = inflater.inflate(R.layout.fragment_list, container, false)
val recyclerView = view.findViewById<RecyclerView>(R.id.recyclerView)
recyclerView.adapter = adapter
recyclerView.layoutManager = LinearLayoutManager(requireActivity())
noDataTextView = view.findViewById(R.id.no_data_textView)
noDataImageView = view.findViewById(R.id.no_data_imageView)
mToDoViewModel.getAllData.observe(viewLifecycleOwner, Observer { data ->
adapter.setData(data)
mSharedViewModel.checkIfDatabaseEmpty(data)
})
floatingActionButton = view.findViewById<FloatingActionButton>(R.id.floatingActionButton)
listLayout = view.findViewById(R.id.listLayout)
floatingActionButton.setOnClickListener {
findNavController().navigate(R.id.action_listFragment_to_addFragment)
}
//set menu
setHasOptionsMenu(true)
mSharedViewModel.emptyDatabase.observe(viewLifecycleOwner, Observer { data ->
showEmptyDatabaseViews(data)
})
return view
}
我有一個可見性系統,如果資料庫為空,則顯示影像。但是當我運行代碼時,第一個影像出現然后資料出現然后我除錯它并看到mSharedViewModel.emptyDatabase.observe()函式首先運行?這里的主要問題是什么,
ps,我正在使用暫停的樂趣來加載資料
編輯 1:我的默認可見性是不可見的
<ImageView>
.
.
android:visibility="invisible"
這是我的 ShareViewModel 類,它將檢查資料庫是否為空
class SharedViewModel(application: Application) : AndroidViewModel(application) {
val emptyDatabase: MutableLiveData<Boolean> = MutableLiveData(true)
fun checkIfDatabaseEmpty(toDoData: List<ToDoData>){
emptyDatabase.value=toDoData.isEmpty()
}
這是我的 ViewModel
class ToDoViewModel(application: Application):AndroidViewModel(application) {
private val toDoDao= ToDoDatabase.getDatabase(application).ToDoDao()
private val repository:ToDoRepository
val getAllData: LiveData<List<ToDoData>>
init {
repository=ToDoRepository(toDoDao)
getAllData=repository.getAllData
}
uj5u.com熱心網友回復:
您的期望:我有一個可見性系統,如果資料庫為空,則顯示影像。
根據您的代碼:
android:visibility="invisible"
默認可見性invisible沒問題,但請檢查視圖模型代碼
val emptyDatabase: MutableLiveData<Boolean> = MutableLiveData(true)
您將值設定為true。因此,當任何observer開始observing更改時,default value將傳遞給observer,因此邏輯上您的代碼是OK,資料庫是empty,影像視圖是visible。
所以,你應該設定false為default value.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/323356.html
上一篇:不能再在t體中找到tr
