From c686e827b833b269669b2358b672d2bb385cdbc3 Mon Sep 17 00:00:00 2001 From: Dmitriy Bulygin Date: Mon, 13 Oct 2025 15:26:42 +0300 Subject: [PATCH 1/2] added solution --- app/build.gradle | 4 + .../homework/viewandresources/AdapterCart.kt | 28 +++ .../homework/viewandresources/CartActivity.kt | 34 +++ .../gpb/homework/viewandresources/Item.kt | 10 + .../homework/viewandresources/MainActivity.kt | 4 + .../homework/viewandresources/ViewHolder.kt | 24 ++ .../app/src/main/res/drawable/ic_bookmark.xml | 0 .../res/drawable/baseline_arrow_back_24.xml | 5 + .../main/res/drawable/cart_arrow_right.xml | 1 + app/src/main/res/drawable/clip.xml | 10 + .../main/res/drawable/food_apple_outline.xml | 1 + app/src/main/res/drawable/ic_bookmark.xml | 9 + app/src/main/res/drawable/ic_cancel.xml | 10 + app/src/main/res/drawable/ic_mic.xml | 9 + .../main/res/drawable/ic_mobile_friendly.xml | 9 + app/src/main/res/drawable/ic_person.xml | 9 + app/src/main/res/drawable/ic_sunny.xml | 12 + app/src/main/res/drawable/ic_today.xml | 9 + app/src/main/res/drawable/more_3_dots.xml | 10 + app/src/main/res/font/roboto_medium.ttf | Bin 0 -> 82628 bytes app/src/main/res/font/roboto_regular.ttf | Bin 0 -> 81044 bytes app/src/main/res/layout/activity_cart.xml | 147 +++++++++++ app/src/main/res/layout/activity_contacts.xml | 231 +++++++++++++++++- app/src/main/res/layout/activity_main.xml | 14 +- app/src/main/res/layout/dialog_signin.xml | 95 ++++++- app/src/main/res/layout/text_row_item.xml | 85 +++++++ app/src/main/res/menu/menu_toolbar.xml | 16 ++ app/src/main/res/menu/menu_toolbar_cart.xml | 9 + app/src/main/res/values-night/themes.xml | 12 +- app/src/main/res/values/colors.xml | 13 + app/src/main/res/values/strings.xml | 44 ++++ app/src/main/res/values/styles.xml | 69 ++++++ app/src/main/res/values/themes.xml | 9 +- 33 files changed, 928 insertions(+), 14 deletions(-) create mode 100644 app/src/main/java/otus/gpb/homework/viewandresources/AdapterCart.kt create mode 100644 app/src/main/java/otus/gpb/homework/viewandresources/Item.kt create mode 100644 app/src/main/java/otus/gpb/homework/viewandresources/ViewHolder.kt create mode 100644 app/src/main/res/drawable/app/src/main/res/drawable/ic_bookmark.xml create mode 100644 app/src/main/res/drawable/baseline_arrow_back_24.xml create mode 100644 app/src/main/res/drawable/cart_arrow_right.xml create mode 100644 app/src/main/res/drawable/clip.xml create mode 100644 app/src/main/res/drawable/food_apple_outline.xml create mode 100644 app/src/main/res/drawable/ic_bookmark.xml create mode 100644 app/src/main/res/drawable/ic_cancel.xml create mode 100644 app/src/main/res/drawable/ic_mic.xml create mode 100644 app/src/main/res/drawable/ic_mobile_friendly.xml create mode 100644 app/src/main/res/drawable/ic_person.xml create mode 100644 app/src/main/res/drawable/ic_sunny.xml create mode 100644 app/src/main/res/drawable/ic_today.xml create mode 100644 app/src/main/res/drawable/more_3_dots.xml create mode 100644 app/src/main/res/font/roboto_medium.ttf create mode 100644 app/src/main/res/font/roboto_regular.ttf create mode 100644 app/src/main/res/layout/text_row_item.xml create mode 100644 app/src/main/res/menu/menu_toolbar.xml create mode 100644 app/src/main/res/menu/menu_toolbar_cart.xml create mode 100644 app/src/main/res/values/styles.xml diff --git a/app/build.gradle b/app/build.gradle index debcfaf..cdc156d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,6 +16,10 @@ android { testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } + buildFeatures { + viewBinding = true + } + buildTypes { release { minifyEnabled false diff --git a/app/src/main/java/otus/gpb/homework/viewandresources/AdapterCart.kt b/app/src/main/java/otus/gpb/homework/viewandresources/AdapterCart.kt new file mode 100644 index 0000000..4a06474 --- /dev/null +++ b/app/src/main/java/otus/gpb/homework/viewandresources/AdapterCart.kt @@ -0,0 +1,28 @@ +package otus.gpb.homework.viewandresources + + +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView + + +class AdapterCart : RecyclerView.Adapter() { + private var list = listOf() + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { + val view = LayoutInflater.from(parent.context) + .inflate(R.layout.text_row_item, parent, false) + return ViewHolder(view) + } + + override fun onBindViewHolder(holder: ViewHolder, position: Int) { + val item = list.getOrNull(position) + item?.let { + holder.bind(item) + } + } + + override fun getItemCount(): Int = list.size + fun setData(newList: List) { + list = newList + } +} \ 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..93d9233 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,45 @@ package otus.gpb.homework.viewandresources +import android.annotation.SuppressLint import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import android.view.View +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView class CartActivity : AppCompatActivity() { + private val adapter: AdapterCart by lazy { AdapterCart() } + + @SuppressLint("MissingInflatedId") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_cart) + + val recyclerView = findViewById(R.id.recyclerView) + recyclerView.adapter = adapter + adapter.setData(generate()) + findViewById(R.id.filledTextCounter).text = + buildString { + append(adapter.itemCount.toString()) + append(" items in your cart") + } + findViewById(R.id.close).setOnClickListener { finish() } + } + + fun generate() = run { + val list = mutableListOf() + repeat( + 4 + ) { + val item = Item( + title = "Name ${it.inc()}", + price = 35, + category = "Category", + description = "Supporting line text lorem ipsum dolor sit amet, consectetur.", + photo = R.drawable.food_apple_outline + ) + list.add(item) + } + list.toList() } } \ No newline at end of file diff --git a/app/src/main/java/otus/gpb/homework/viewandresources/Item.kt b/app/src/main/java/otus/gpb/homework/viewandresources/Item.kt new file mode 100644 index 0000000..543baa3 --- /dev/null +++ b/app/src/main/java/otus/gpb/homework/viewandresources/Item.kt @@ -0,0 +1,10 @@ +package otus.gpb.homework.viewandresources + + +data class Item( + val title: String, + val price: Int, + val category: String, + val description: String, + val photo: Int +) \ No newline at end of file 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..7428721 100644 --- a/app/src/main/java/otus/gpb/homework/viewandresources/MainActivity.kt +++ b/app/src/main/java/otus/gpb/homework/viewandresources/MainActivity.kt @@ -4,12 +4,16 @@ import android.content.Intent import android.os.Bundle import android.widget.Button import androidx.appcompat.app.AppCompatActivity +import com.google.android.material.appbar.MaterialToolbar import com.google.android.material.dialog.MaterialAlertDialogBuilder class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) + val toolbar = findViewById(R.id.materialToolbar) + setSupportActionBar(toolbar) + findViewById