使用MutableList时,当list列表为空时,怎么通知activity刷新UI,显示列表为 空的文本提示,用kotlin代码实现
时间: 2024-10-09 10:03:27 浏览: 1
当使用 `MutableList` 并且需要在列表为空时通知 Activity 刷新 UI 显示空的文本提示,你可以通过观察列表的变化并在变化时处理这种情况。这里是一个简单的 Kotlin 示例,假设你有一个 List 存储在 ViewModel 中,并且 Activity 通过 LiveData 接收更新:
```kotlin
// ViewModel
class MyViewModel : ViewModel() {
val myList = MutableLiveData<List<String>>()
init {
// 初始化列表为空,可以在这里添加数据或设置默认值
myList.value = emptyList()
}
fun addDataIfNotEmpty() {
if (myList.value.isNotEmpty()) {
// 添加数据到 list 或做其他操作...
myList.postValue(yourNewData)
} else {
// 如果 list 仍然为空,更新 LiveData 并通知 Activity
myList.postValue(emptyList())
}
}
}
// Activity/Fragment
class YourActivity : AppCompatActivity(), ViewModelObserver<MyViewModel> {
private lateinit var viewModel: MyViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
viewModel.observe(this, this) // 注册观察者
}
override fun on observe(owner: Owner, model: Any?) {
when (model) {
is MutableLiveData<List<String>> -> {
// 当 list 更新时检查是否为空
if (model.value.isEmpty()) {
// 更新 UI 显示 "列表为空"
updateUIWithEmptyMessage()
} else {
// 更新 UI 显示实际的列表
updateUI(model.value)
}
}
else -> Log.wtf("ViewModel", "Unexpected data type")
}
}
private fun updateUIWithEmptyMessage() {
// 在这里更新 UI 显示空的文本提示
Toast.makeText(this, "列表为空", Toast.LENGTH_SHORT).show()
// 或者更新视图组件的 text 或者 layout
yourTextView.text = "列表为空"
}
private fun updateUI(list: List<String>) {
// 更新 UI 显示列表内容
}
}
```
在这个例子中,当 `MyViewModel` 的列表变为空时,`onObserve` 方法会被调用,然后在 `updateUIWithEmptyMessage` 函数中更新 UI 显示相应的提示信息。请注意,你需要确保 `YourActivity` 实现了 `ViewModelObserver` 接口并注册到 ViewModel 上。