【发布时间】:2021-12-04 03:00:06
【问题描述】:
我正在使用两个片段和一个 ViewModel 开发一个简单的卡路里计数器应用程序。我是初学者,这是对我刚刚为课程创建的应用程序的修改(此应用程序不是家庭作业)。它使用 ViewModel 并有一个收集用户输入的片段和一个将输入显示为 MutableLiveData 的 MutableList 的片段。我希望列表屏幕最初是空的,除了带有说明的 TextView,并且我希望一旦将条目添加到列表中,说明就会消失。我的班主任告诉我在带有列表的片段中使用 if-else 语句来实现这一点,但它不起作用。他没有告诉我具体放在哪里。我尝试了很多不同的地点,但没有一个有效。我没有收到错误 - 只是 TextView 的可见性没有改变。
这是带有列表的 ViewModel 的代码:
val entryList: MutableLiveData<MutableList<Entry>>
get() = _entryList
init {
_entry = MutableLiveData<Entry>()
_entryList.value = mutableListOf()
}
fun addEntry(entryInfo: Entry){
_entry.value = entryInfo
_entryList.value?.add(_entry.value!!)
}
}
这是列表片段中观察者的代码:
Observer { entryList ->
val entryListView: View = inflater.inflate(R.layout.fragment_entry_list, null, false)
if (entryList.isNullOrEmpty()) {
entryListView.instructions_text_view.visibility = View.VISIBLE
} else {
entryListView.instructions_text_view.visibility = View.GONE
}
entryList.forEach {entry ->
val view: View = inflater.inflate(R.layout.entry_list_item, null, false)
view.date_entry_text_view.text = String.format(getString(R.string.date), entry.date)
view.calories_entry_text_view.text =
view.line_divider
binding.entryList.addView(view)
}
感谢您的帮助。
【问题讨论】:
标签: android kotlin android-fragments