在我的应用中,我有以下流程:
我的片段中的ClickListender:
search_button.setOnClickListener {
if(search_input.text.isNullOrEmpty())
Toast.makeText(activity, "Input Error", Toast.LENGTH_LONG).show()
else
viewModel.onSearchButtonClicked(search_input.text.toString())
}
onSearchButtonClicked
内部的[viewModel
:
fun onSearchButtonClicked(input: String) {
coroutineScope.launch {
repo.insertToDatabase(input)
}
}
insertToDatabase
内部的[Repository
:
suspend fun insertToDatabase(string: String) {
withContext(Dispatchers.IO) {
val dataList =
ExternalApi.retrofitCall.getData(string).await()
if (dataList.intialDataResult < 1) {
//show error
} else {
//all good
database.myDataBase.insertAll(dataList)
}
}
}
如果intialDataResult
小于1,我需要显示错误消息。我考虑过在存储库中创建初始值为false的MutableLiveData
,然后通过viewModel
从片段中侦听,但这不是一个好方法,因为我无法在显示后再次将LiveData
设置为“ false”错误消息。
我还试图从insertToDatabase
函数返回布尔值,并确定是否显示错误,但没有成功。
任何想法我该如何解决?