android - 如何在生命周期Scope.launch 中返回布尔值
问题描述
我有一个 corountine,我使用了生命周期Scope.launch,我希望它返回一个布尔值。我该怎么做?
fun updateDb(restaurantEntity: RestaurantEntity, mode: Int): Boolean {
val db =
Room.databaseBuilder(requireContext(), RestaurantDatabase::class.java, "restaurant-db")
.build()
lifecycleScope.launch {
when (mode) {
1 -> {
val restaurant: RestaurantEntity =
db.restaurantDao().getAllRestaurant(restaurantEntity.restaurant_Id)
db.close()
return@async true
}
2 -> {
db.restaurantDao().insertRestaurant(restaurantEntity)
db.close()
true
}
3 -> {
db.restaurantDao().deleteRestaurant(restaurantEntity)
db.close()
true
}
}
}
return false
}
我使用return@async true 并使用return true和 just true,它们都不起作用。
解决方案
根据您在评论中描述的内容,我认为实现此目的的最佳方法是在您的变量中创建一个变量,OrderViewHolder
以便finalPrice
您可以在Adapter
. 与此类似的东西:
class OrderViewHolder(
itemView: View
) : RecyclerView.ViewHolder(itemView) {
// Init finalPrice
var finalPrice: Int = 0
override fun onItemSelected(
parent: AdapterView<*>?,
view: View?,
position: Int,
id: Long
) {
// calculate finalPrice
finalPrice = (currentPrice * quantity!!).toString()
}
}
之后,您可以finalPrice
在适配器内部访问:
override fun onBindViewHolder(
holder: OrderViewHolder,
position: Int
) {
// Access finalPrice like ->
holder.finalPrice
}
推荐阅读
- c++ - 如何导出静态链接到 MFC 的常规 MFC DLL 的函数以与 C++ 中的非 MFC Win32 控制台应用程序一起使用
- apache - 将 NGINX 重写规则转换为 Apache htaccess
- excel - Selection.Paste 不起作用有什么原因吗?
- postgresql - 无法连接到服务器:致命:角色“postgres”不存在
- c - 什么情况下会出现分段错误?
- jquery - Laravel flash 弹出通知
- r - 如何在没有 row.names / 行号的情况下打印 tibble
- angular - Angular Library Project:如何将文件从一个辅助输入点导入另一个辅助入口点
- excel - 多个条件如果条件 - 根据前面的条件确定最高数字
- c# - EF Core 映射错误的属性名称