diff --git a/app/build.gradle b/app/build.gradle index debcfaf..2b6af89 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -32,8 +32,9 @@ android { } dependencies { - implementation 'androidx.core:core-ktx:1.15.0' + implementation 'androidx.core:core-ktx:1.16.0' implementation 'androidx.appcompat:appcompat:1.7.0' implementation 'com.google.android.material:material:1.12.0' - implementation 'androidx.constraintlayout:constraintlayout:2.2.0' + implementation 'androidx.constraintlayout:constraintlayout:2.2.1' + implementation 'androidx.recyclerview:recyclerview:1.4.0' } \ No newline at end of file diff --git a/app/src/main/java/otus/gpb/homework/viewandresources/CartActivity.kt b/app/src/main/java/otus/gpb/homework/viewandresources/CartActivity.kt index b6cbf73..4d9703f 100644 --- a/app/src/main/java/otus/gpb/homework/viewandresources/CartActivity.kt +++ b/app/src/main/java/otus/gpb/homework/viewandresources/CartActivity.kt @@ -1,11 +1,105 @@ package otus.gpb.homework.viewandresources -import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.appcompat.app.AppCompatActivity +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView class CartActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_cart) + + class CartItem( + var image: Int, + var name: String, + var category: String, + var extra: String, + var price: Double = 0.0 + ) + + fun formatPrice(price: Double): String { + return "%.2f".format(price) + } + class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val itemName: TextView = itemView.findViewById(R.id.cart_item_name) + val itemCategory: TextView = itemView.findViewById(R.id.cart_item_category) + val itemExtra: TextView = itemView.findViewById(R.id.cart_item_extra) + val itemPrice: TextView = itemView.findViewById(R.id.cart_item_price) + val itemImage: ImageView = itemView.findViewById(R.id.cart_item_image) + } + + class MyAdapter(private val data: List) : + RecyclerView.Adapter() { + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { + val view = LayoutInflater.from(parent.context) + .inflate(R.layout.cart_item, parent, false) + return MyViewHolder(view) + } + + override fun getItemCount(): Int { + return data.size + } + + override fun onBindViewHolder(holder: MyViewHolder, position: Int) { + holder.itemName.width = holder.itemName.measuredWidth + holder.itemName.isSelected = true + with(data[position]) { + holder.itemName.text = name + holder.itemPrice.text = formatPrice(price) + holder.itemCategory.text = category + holder.itemExtra.text = extra + + holder.itemImage.setImageResource(image) + } + + } + + override fun onViewAttachedToWindow(holder: MyViewHolder) { + holder.itemName.isSelected = true + } + + override fun onViewDetachedFromWindow(holder: MyViewHolder) { + holder.itemName.isSelected = false + } + + } + + + + val recyclerView = findViewById(R.id.item_list) + + val data: List = listOf( + CartItem(R.drawable.eggs, "Куриные яйца", "Продукты", "Сорт С2", 12.0), + CartItem(R.drawable.banana, "Бананы", "Продукты", "Ямайка", 2.0), + CartItem(R.drawable.salt, "Соль пищевая", "Продукты", "Без ГМО", 1.0), + CartItem(R.drawable.butter, "Сливочное масло", "Продукты", "72.5% жирности", 2.55), + CartItem(R.drawable.bread, "Хлеб ржаной", "Продукты", "Собвестнного производства", 1.99), + CartItem(R.drawable.sausage, "Сосиски молочные", "Продукты", "Без молока и мяса", 4.0) + ) + + recyclerView.layoutManager = LinearLayoutManager(this) + recyclerView.adapter = MyAdapter(data) + + findViewById(R.id.cart_items_count).text = resources.getQuantityString(R.plurals.cart_items_count, data.count(), data.count()) + + var subtotal = 0.0 + data.forEach { item -> + subtotal += item.price + } + findViewById(R.id.cart_subtotal_value).text = formatPrice(subtotal) + val shipping = 25.0 + findViewById(R.id.cart_shipping_value).text = formatPrice(shipping) + val tax = 0.2 + val taxAmount = subtotal * tax + findViewById(R.id.cart_tax_value).text = formatPrice(taxAmount) + val orderTotal = subtotal + taxAmount + shipping + findViewById(R.id.cart_order_total_value).text = formatPrice(orderTotal) } -} \ No newline at end of file +} + diff --git a/app/src/main/java/otus/gpb/homework/viewandresources/ContactsActivity.kt b/app/src/main/java/otus/gpb/homework/viewandresources/ContactsActivity.kt index 25f1ffb..968f84d 100644 --- a/app/src/main/java/otus/gpb/homework/viewandresources/ContactsActivity.kt +++ b/app/src/main/java/otus/gpb/homework/viewandresources/ContactsActivity.kt @@ -2,6 +2,9 @@ package otus.gpb.homework.viewandresources import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import android.widget.ArrayAdapter +import android.widget.ListView +import android.widget.Toast class ContactsActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { diff --git a/app/src/main/java/otus/gpb/homework/viewandresources/MainActivity.kt b/app/src/main/java/otus/gpb/homework/viewandresources/MainActivity.kt index 22b779c..0c76ae7 100644 --- a/app/src/main/java/otus/gpb/homework/viewandresources/MainActivity.kt +++ b/app/src/main/java/otus/gpb/homework/viewandresources/MainActivity.kt @@ -19,7 +19,7 @@ class MainActivity : AppCompatActivity() { } findViewById