以下是一个简单的Android购物车功能的ViewModel示例代码:
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
class ShoppingCartViewModel : ViewModel() {
private val _cartItems = MutableLiveData>()
val cartItems: LiveData> get() = _cartItems
private val _totalPrice = MutableLiveData()
val totalPrice: LiveData get() = _totalPrice
init {
_cartItems.value = emptyList()
_totalPrice.value = 0.0
}
fun addToCart(item: Item) {
val currentCartItems = _cartItems.value.orEmpty().toMutableList()
val existingCartItem = currentCartItems.find { it.item == item }
if (existingCartItem != null) {
existingCartItem.quantity++
} else {
currentCartItems.add(CartItem(item, 1))
}
_cartItems.value = currentCartItems
calculateTotalPrice()
}
fun removeFromCart(item: Item) {
val currentCartItems = _cartItems.value.orEmpty().toMutableList()
val existingCartItem = currentCartItems.find { it.item == item }
if (existingCartItem != null) {
if (existingCartItem.quantity > 1) {
existingCartItem.quantity--
} else {
currentCartItems.remove(existingCartItem)
}
_cartItems.value = currentCartItems
calculateTotalPrice()
}
}
private fun calculateTotalPrice() {
val currentCartItems = _cartItems.value.orEmpty()
var total = 0.0
for (cartItem in currentCartItems) {
total += cartItem.item.price * cartItem.quantity
}
_totalPrice.value = total
}
}
data class Item(val name: String, val price: Double)
data class CartItem(val item: Item, var quantity: Int)
在上面的代码中,ShoppingCartViewModel
是一个继承自ViewModel
的类,用于管理购物车功能的数据和逻辑。它包含了以下几个属性和方法:
cartItems
是一个LiveData
对象,用于观察购物车中的物品列表。totalPrice
是一个LiveData
对象,用于观察购物车中物品的总价。addToCart()
方法用于将物品添加到购物车中。removeFromCart()
方法用于从购物车中移除物品。calculateTotalPrice()
方法用于计算购物车中物品的总价。在ViewModel中使用LiveData
来存储购物车中的物品列表和总价,可以确保这些数据的变化能够被观察到,并且可以在界面中及时更新。通过调用addToCart()
和removeFromCart()
方法来操作购物车中的物品,并根据操作结果来更新购物车列表和总价。
这只是一个简单的示例代码,实际的购物车功能可能还会有其他需求,例如清空购物车、调整物品数量等。你可以根据具体需求来扩展和修改这个ViewModel类。
下一篇:android购物车数据库