物體類
@Entity(tableName = "user_table")
data class User(
@PrimaryKey(autoGenerate = true)
//....
) {
constructor(
userID: Int
) : this(
userID,
//...
)
}
道類
@Dao
interface UserDao {
@Insert(onConflict = IGNORE)
fun addUser(user: User): Long
//.......
}
存盤庫類
class RoomUserRepository(context: Context) {
//...
suspend fun addUser(user: User): Long = userDao.addUser(user)
//...
}
視圖模式類
class UserViewModel(val context: Application) : AndroidViewModel(context) {
//...
var userID: Long = 0
fun addUser(user: User) {
viewModelScope.launch(Dispatchers.IO) {
userID = roomUserRepository.addUser(user)
}
}
//...
}
注冊按鈕onclick{}
clicked = !clicked
if (confirmpassword != password) {
message = "Incorrect password! please try again"
} else if (inputChack(fullname, email, password)) {
message = "Information is incomplete"
} else {
// Create User
user.email = email
user.fullName = fullname
user.password = password
userVM.addUser(user)
// Create Cart
cart.userID = userVM.userID.toInt()
cartVM.addCart(cart)
Log.d("user & cart", "adding users & cart")
}
正如您所看到的,當用戶單擊SIGN UP
我將User & Cart
在我的資料庫中創建時,用戶創建作業正常,但是當我創建購物車時,我必須傳遞用戶 ID,并且我從userID
變數中獲取它,您可以在ViewMode Class
問題中找到它是值正在獲取cart.userID = userVM.userID.toInt()
然后它被更新了
只是我想要
在呼叫之后userVM.addUser(user)
我必須等到userID
變數得到更新(查看 ViewMode 類)然后我得到更新的值cart.userID = userVM.userID.toInt()
uj5u.com熱心網友回復:
然后試試這個:
fun addUser(user: User, callBack: (Long) -> Unit) {
viewModelScope.launch(Dispatchers.IO) {
userID = roomUserRepository.addUser(user)
callBack(userID)
}
}
// Create User
user.email = email
user.fullName = fullname
user.password = password
userVM.addUser(user) { id ->
cart.userID = id
cartVM.addCart(cart)
Log.d("user & cart", "adding users & cart")
}
uj5u.com熱心網友回復:
根據檔案,以下函式的回傳值是 rowId,而不是 userID。
@Insert(onConflict = IGNORE)
fun addUser(user: User): Long
如果要獲取用戶 ID,則應撰寫如下所示的 get 函式。
@Query("SELECT * FROM user_table)
fun getUsers(): Flow<List<User>>
然后,添加如下觀察者
val users = roomUserRepository.getUsers().asLiveData()
也不要忘記添加必要的依賴項。
// ViewModel
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
// LiveData
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
// Coroutines
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$kotlin_version"
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/520745.html
標籤:安卓安卓工作室android-jetpack-compose
上一篇:AndroidStudio的logcat視窗日志級別過濾器丟失
下一篇:使用正則運算式分隔標題和URL對