From 124e1fb6f1e04b5c35f6ddc37352fb89e45a516e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B0=D0=BB=D1=8C=D0=BD=D0=B8=D0=BA=D0=BE=D0=B2=20?= =?UTF-8?q?=D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0=B8=D0=B9=20=D0=92=D0=BB=D0=B0?= =?UTF-8?q?=D0=B4=D0=B8=D0=BC=D0=B8=D1=80=D0=BE=D0=B2=D0=B8=D1=87?= Date: Sun, 2 Nov 2025 12:58:21 +0300 Subject: [PATCH 1/8] contacts layout wip --- .../viewandresources/ContactsActivity.kt | 53 +++++ app/src/main/res/drawable/account_outline.xml | 1 + app/src/main/res/drawable/arrow_left.xml | 1 + .../main/res/drawable/bookmark_outline.xml | 1 + app/src/main/res/drawable/calendar.xml | 3 + app/src/main/res/drawable/cellphone_check.xml | 1 + app/src/main/res/drawable/dots_vertical.xml | 1 + app/src/main/res/drawable/microphone.xml | 1 + app/src/main/res/drawable/paperclip.xml | 1 + app/src/main/res/layout/activity_contacts.xml | 196 ++++++++++++++++++ .../main/res/menu/contacts_app_bar_menu.xml | 18 ++ app/src/main/res/values-night/colors.xml | 13 ++ app/src/main/res/values/colors.xml | 3 + app/src/main/res/values/strings.xml | 16 ++ 14 files changed, 309 insertions(+) create mode 100644 app/src/main/res/drawable/account_outline.xml create mode 100644 app/src/main/res/drawable/arrow_left.xml create mode 100644 app/src/main/res/drawable/bookmark_outline.xml create mode 100644 app/src/main/res/drawable/calendar.xml create mode 100644 app/src/main/res/drawable/cellphone_check.xml create mode 100644 app/src/main/res/drawable/dots_vertical.xml create mode 100644 app/src/main/res/drawable/microphone.xml create mode 100644 app/src/main/res/drawable/paperclip.xml create mode 100644 app/src/main/res/menu/contacts_app_bar_menu.xml create mode 100644 app/src/main/res/values-night/colors.xml 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..27ba848 100644 --- a/app/src/main/java/otus/gpb/homework/viewandresources/ContactsActivity.kt +++ b/app/src/main/java/otus/gpb/homework/viewandresources/ContactsActivity.kt @@ -1,11 +1,64 @@ package otus.gpb.homework.viewandresources +import android.icu.text.SimpleDateFormat +import android.icu.util.TimeZone +import android.os.Build import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import android.widget.Toast +import androidx.annotation.RequiresApi +import com.google.android.material.appbar.MaterialToolbar +import com.google.android.material.datepicker.MaterialDatePicker +import com.google.android.material.datepicker.MaterialStyledDatePickerDialog +import com.google.android.material.textfield.TextInputEditText +import java.util.Date +import java.util.Locale +import kotlin.time.Duration +import kotlin.time.Duration.Companion.seconds class ContactsActivity : AppCompatActivity() { + @RequiresApi(Build.VERSION_CODES.N) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_contacts) + + findViewById(R.id.contacts_toolbar).setNavigationOnClickListener { finish() } + + val bookingDateEditText = findViewById(R.id.booking_date_edit_text) + + + + val datePickerBuilder = MaterialDatePicker.Builder.datePicker() + datePickerBuilder.setTitleText("Select Date") + if (bookingDateEditText.text.toString().isNotEmpty()) { + try { + val dateFormat = SimpleDateFormat("dd/MM/yyyy", Locale.getDefault()) + dateFormat.timeZone = TimeZone.getTimeZone("UTC") + val parsedDate = dateFormat.parse(bookingDateEditText.text.toString()) + parsedDate?.let { + datePickerBuilder.setSelection(it.time) + } + } catch (e: Exception) { + e.printStackTrace() + } + } + val datePicker = datePickerBuilder.build() + datePicker.addOnPositiveButtonClickListener { selection -> + val dateFormat = SimpleDateFormat("dd/MM/yyyy", Locale.getDefault()) + dateFormat.timeZone = TimeZone.getTimeZone("UTC") + val formattedDate = dateFormat.format(Date(selection)) + bookingDateEditText.setText(formattedDate) + } + datePicker.addOnNegativeButtonClickListener { + bookingDateEditText.clearFocus() + } + datePicker.addOnDismissListener { + bookingDateEditText.clearFocus() + } + + bookingDateEditText.setOnClickListener { + datePicker.show(supportFragmentManager, "date_picker_tag") + } + } } \ No newline at end of file diff --git a/app/src/main/res/drawable/account_outline.xml b/app/src/main/res/drawable/account_outline.xml new file mode 100644 index 0000000..836da9f --- /dev/null +++ b/app/src/main/res/drawable/account_outline.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/src/main/res/drawable/arrow_left.xml b/app/src/main/res/drawable/arrow_left.xml new file mode 100644 index 0000000..411a2c5 --- /dev/null +++ b/app/src/main/res/drawable/arrow_left.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/src/main/res/drawable/bookmark_outline.xml b/app/src/main/res/drawable/bookmark_outline.xml new file mode 100644 index 0000000..27101d4 --- /dev/null +++ b/app/src/main/res/drawable/bookmark_outline.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/src/main/res/drawable/calendar.xml b/app/src/main/res/drawable/calendar.xml new file mode 100644 index 0000000..1669d97 --- /dev/null +++ b/app/src/main/res/drawable/calendar.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/cellphone_check.xml b/app/src/main/res/drawable/cellphone_check.xml new file mode 100644 index 0000000..921b97d --- /dev/null +++ b/app/src/main/res/drawable/cellphone_check.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/src/main/res/drawable/dots_vertical.xml b/app/src/main/res/drawable/dots_vertical.xml new file mode 100644 index 0000000..7acfe6e --- /dev/null +++ b/app/src/main/res/drawable/dots_vertical.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/src/main/res/drawable/microphone.xml b/app/src/main/res/drawable/microphone.xml new file mode 100644 index 0000000..fcbb0dd --- /dev/null +++ b/app/src/main/res/drawable/microphone.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/src/main/res/drawable/paperclip.xml b/app/src/main/res/drawable/paperclip.xml new file mode 100644 index 0000000..db496c2 --- /dev/null +++ b/app/src/main/res/drawable/paperclip.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_contacts.xml b/app/src/main/res/layout/activity_contacts.xml index 6ef087b..a501c4f 100644 --- a/app/src/main/res/layout/activity_contacts.xml +++ b/app/src/main/res/layout/activity_contacts.xml @@ -4,6 +4,202 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + android:padding="10dp" tools:context=".ContactsActivity"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/contacts_app_bar_menu.xml b/app/src/main/res/menu/contacts_app_bar_menu.xml new file mode 100644 index 0000000..0c9255b --- /dev/null +++ b/app/src/main/res/menu/contacts_app_bar_menu.xml @@ -0,0 +1,18 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml new file mode 100644 index 0000000..429b1ca --- /dev/null +++ b/app/src/main/res/values-night/colors.xml @@ -0,0 +1,13 @@ + + + #FFBB86FC + #FF6200EE + #FF3700B3 + #FF03DAC5 + #FF018786 + #FF000000 + #FFFFFFFF + @color/black + @color/white + #49454F + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index f8c6127..facd346 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -7,4 +7,7 @@ #FF018786 #FF000000 #FFFFFFFF + @color/white + @color/black + #DDE6E0E9 \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a7036ac..6b2bb71 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,3 +1,19 @@ View & Resources + Ivan Ivanov + Attachments + More actions + Name + Phone + +1(234)567–8900 + Select + Address + + Mobile + Work + + City + Country + Date + Notes \ No newline at end of file From 1bb92e53827bbeb734bf1406e35965f593d42065 Mon Sep 17 00:00:00 2001 From: "E.Salnikov" Date: Sun, 2 Nov 2025 17:29:13 +0300 Subject: [PATCH 2/8] add scroll --- app/src/main/res/layout/activity_contacts.xml | 380 +++++++++--------- 1 file changed, 190 insertions(+), 190 deletions(-) diff --git a/app/src/main/res/layout/activity_contacts.xml b/app/src/main/res/layout/activity_contacts.xml index a501c4f..ceca648 100644 --- a/app/src/main/res/layout/activity_contacts.xml +++ b/app/src/main/res/layout/activity_contacts.xml @@ -1,205 +1,205 @@ - + android:layout_height="match_parent"> - + android:layout_height="match_parent" + android:padding="10dp" + tools:context=".ContactsActivity"> - - - - - - - - - - - + + + + + - - - - - + + + + + + + + + + - - - - - - - - - - - + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - + + + + + + - - - - - \ No newline at end of file + android:layout_height="wrap_content" + android:layout_marginTop="10dp" + android:hint="@string/contact_notes_hint" + app:endIconContentDescription="@string/contact_notes_hint" + app:endIconDrawable="@drawable/microphone" + app:endIconMode="custom" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/booking_date_input_layout"> + + + + + + + \ No newline at end of file From 9a449998926e1f303891c056eeeb0c61b35cc68c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B0=D0=BB=D1=8C=D0=BD=D0=B8=D0=BA=D0=BE=D0=B2=20?= =?UTF-8?q?=D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0=B8=D0=B9=20=D0=92=D0=BB=D0=B0?= =?UTF-8?q?=D0=B4=D0=B8=D0=BC=D0=B8=D1=80=D0=BE=D0=B2=D0=B8=D1=87?= Date: Sun, 9 Nov 2025 16:07:18 +0300 Subject: [PATCH 3/8] cart in progress --- .../homework/viewandresources/CartActivity.kt | 19 ++++++++++++- .../viewandresources/ContactsActivity.kt | 7 +---- .../main/res/drawable/cart_item_sample.xml | 14 ++++++++++ .../res/drawable/close_circle_outline.xml | 1 + app/src/main/res/layout/activity_cart.xml | 28 +++++++++++++++++++ app/src/main/res/menu/cart_app_bar_menu.xml | 11 ++++++++ app/src/main/res/values-night/colors.xml | 1 + app/src/main/res/values/colors.xml | 1 + app/src/main/res/values/strings.xml | 3 ++ app/src/main/res/values/styles.xml | 7 +++++ 10 files changed, 85 insertions(+), 7 deletions(-) create mode 100644 app/src/main/res/drawable/cart_item_sample.xml create mode 100644 app/src/main/res/drawable/close_circle_outline.xml create mode 100644 app/src/main/res/menu/cart_app_bar_menu.xml create mode 100644 app/src/main/res/values/styles.xml 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..2ca29bf 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,28 @@ package otus.gpb.homework.viewandresources -import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import android.util.Log +import androidx.appcompat.app.AppCompatActivity +import com.google.android.material.appbar.MaterialToolbar class CartActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { + Log.i("Salnikov", "Start activity") super.onCreate(savedInstanceState) setContentView(R.layout.activity_cart) + + findViewById(R.id.cart_toolbar).setNavigationOnClickListener { finish() } + + val topAppBar = findViewById(R.id.cart_toolbar) + topAppBar.setOnMenuItemClickListener { menuItem -> + when (menuItem.itemId) { + R.id.close -> { + finish() + true + } + + else -> false + } + } } } \ 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 27ba848..6600c2a 100644 --- a/app/src/main/java/otus/gpb/homework/viewandresources/ContactsActivity.kt +++ b/app/src/main/java/otus/gpb/homework/viewandresources/ContactsActivity.kt @@ -3,18 +3,14 @@ package otus.gpb.homework.viewandresources import android.icu.text.SimpleDateFormat import android.icu.util.TimeZone import android.os.Build -import androidx.appcompat.app.AppCompatActivity import android.os.Bundle -import android.widget.Toast import androidx.annotation.RequiresApi +import androidx.appcompat.app.AppCompatActivity import com.google.android.material.appbar.MaterialToolbar import com.google.android.material.datepicker.MaterialDatePicker -import com.google.android.material.datepicker.MaterialStyledDatePickerDialog import com.google.android.material.textfield.TextInputEditText import java.util.Date import java.util.Locale -import kotlin.time.Duration -import kotlin.time.Duration.Companion.seconds class ContactsActivity : AppCompatActivity() { @RequiresApi(Build.VERSION_CODES.N) @@ -27,7 +23,6 @@ class ContactsActivity : AppCompatActivity() { val bookingDateEditText = findViewById(R.id.booking_date_edit_text) - val datePickerBuilder = MaterialDatePicker.Builder.datePicker() datePickerBuilder.setTitleText("Select Date") if (bookingDateEditText.text.toString().isNotEmpty()) { diff --git a/app/src/main/res/drawable/cart_item_sample.xml b/app/src/main/res/drawable/cart_item_sample.xml new file mode 100644 index 0000000..c21aab8 --- /dev/null +++ b/app/src/main/res/drawable/cart_item_sample.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/close_circle_outline.xml b/app/src/main/res/drawable/close_circle_outline.xml new file mode 100644 index 0000000..adf8fea --- /dev/null +++ b/app/src/main/res/drawable/close_circle_outline.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_cart.xml b/app/src/main/res/layout/activity_cart.xml index 57dc4d4..809e6af 100644 --- a/app/src/main/res/layout/activity_cart.xml +++ b/app/src/main/res/layout/activity_cart.xml @@ -6,4 +6,32 @@ android:layout_height="match_parent" tools:context=".CartActivity"> + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/cart_app_bar_menu.xml b/app/src/main/res/menu/cart_app_bar_menu.xml new file mode 100644 index 0000000..b2fa8ad --- /dev/null +++ b/app/src/main/res/menu/cart_app_bar_menu.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml index 429b1ca..90b3592 100644 --- a/app/src/main/res/values-night/colors.xml +++ b/app/src/main/res/values-night/colors.xml @@ -9,5 +9,6 @@ #FFFFFFFF @color/black @color/white + @color/black #49454F \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index facd346..0439860 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -9,5 +9,6 @@ #FFFFFFFF @color/white @color/black + @color/white #DDE6E0E9 \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 6b2bb71..d04ce3e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -16,4 +16,7 @@ Country Date Notes + Cart + Close + Item sample \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..db9ee36 --- /dev/null +++ b/app/src/main/res/values/styles.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file From 6a41e510084a6aebb280e635dbb9373a803d0852 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B0=D0=BB=D1=8C=D0=BD=D0=B8=D0=BA=D0=BE=D0=B2=20?= =?UTF-8?q?=D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0=B8=D0=B9=20=D0=92=D0=BB=D0=B0?= =?UTF-8?q?=D0=B4=D0=B8=D0=BC=D0=B8=D1=80=D0=BE=D0=B2=D0=B8=D1=87?= Date: Sun, 9 Nov 2025 17:21:33 +0300 Subject: [PATCH 4/8] cart item --- app/src/main/res/layout/activity_cart.xml | 75 +++++++++++++++++++++-- app/src/main/res/values/styles.xml | 2 +- 2 files changed, 70 insertions(+), 7 deletions(-) diff --git a/app/src/main/res/layout/activity_cart.xml b/app/src/main/res/layout/activity_cart.xml index 809e6af..0df2cf3 100644 --- a/app/src/main/res/layout/activity_cart.xml +++ b/app/src/main/res/layout/activity_cart.xml @@ -24,14 +24,77 @@ app:title="@string/cart" /> - + android:paddingTop="8dp" + android:paddingBottom="8dp" + > + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index db9ee36..7fba9f3 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -2,6 +2,6 @@ \ No newline at end of file From 65401c71e7198f969bc80588a67ba367e199a1af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B0=D0=BB=D1=8C=D0=BD=D0=B8=D0=BA=D0=BE=D0=B2=20?= =?UTF-8?q?=D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0=B8=D0=B9=20=D0=92=D0=BB=D0=B0?= =?UTF-8?q?=D0=B4=D0=B8=D0=BC=D0=B8=D1=80=D0=BE=D0=B2=D0=B8=D1=87?= Date: Tue, 11 Nov 2025 21:26:06 +0300 Subject: [PATCH 5/8] recycler view --- .../homework/viewandresources/CartActivity.kt | 19 +++ .../gpb/homework/viewandresources/CartItem.kt | 9 ++ .../homework/viewandresources/ViewCartItem.kt | 45 ++++++ app/src/main/res/layout/activity_cart.xml | 140 ++++++++++-------- app/src/main/res/layout/cart_item.xml | 79 ++++++++++ app/src/main/res/values-night/colors.xml | 1 + app/src/main/res/values/colors.xml | 1 + app/src/main/res/values/strings.xml | 1 + 8 files changed, 230 insertions(+), 65 deletions(-) create mode 100644 app/src/main/java/otus/gpb/homework/viewandresources/CartItem.kt create mode 100644 app/src/main/java/otus/gpb/homework/viewandresources/ViewCartItem.kt create mode 100644 app/src/main/res/layout/cart_item.xml 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 2ca29bf..9381520 100644 --- a/app/src/main/java/otus/gpb/homework/viewandresources/CartActivity.kt +++ b/app/src/main/java/otus/gpb/homework/viewandresources/CartActivity.kt @@ -3,6 +3,9 @@ package otus.gpb.homework.viewandresources import android.os.Bundle import android.util.Log import androidx.appcompat.app.AppCompatActivity +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView import com.google.android.material.appbar.MaterialToolbar class CartActivity : AppCompatActivity() { @@ -24,5 +27,21 @@ class CartActivity : AppCompatActivity() { else -> false } } + + val rv = findViewById(R.id.cart_items) + rv.addItemDecoration( + DividerItemDecoration(this, DividerItemDecoration.VERTICAL) + ) + rv.layoutManager = LinearLayoutManager(this) + + val itemsList = listOf( + CartItem(image = R.drawable.cart_item_sample, title = "Title 1", category = "category", description = "description 1", price = 32), + CartItem(image = R.drawable.cart_item_sample, title = "Title 2", category = "category", description = "description 2", price = 32), + CartItem(image = R.drawable.cart_item_sample, title = "Title 3", category = "category", description = "description 3", price = 32), + CartItem(image = R.drawable.cart_item_sample, title = "Title 4", category = "category", description = "description 4", price = 32), + ) + + rv.adapter = ViewCartItem(itemsList) + } } \ No newline at end of file diff --git a/app/src/main/java/otus/gpb/homework/viewandresources/CartItem.kt b/app/src/main/java/otus/gpb/homework/viewandresources/CartItem.kt new file mode 100644 index 0000000..be47220 --- /dev/null +++ b/app/src/main/java/otus/gpb/homework/viewandresources/CartItem.kt @@ -0,0 +1,9 @@ +package otus.gpb.homework.viewandresources + +data class CartItem( + val image: Int, + val title: String, + val category: String, + val description: String, + val price: Int +) \ No newline at end of file diff --git a/app/src/main/java/otus/gpb/homework/viewandresources/ViewCartItem.kt b/app/src/main/java/otus/gpb/homework/viewandresources/ViewCartItem.kt new file mode 100644 index 0000000..58d4d50 --- /dev/null +++ b/app/src/main/java/otus/gpb/homework/viewandresources/ViewCartItem.kt @@ -0,0 +1,45 @@ +package otus.gpb.homework.viewandresources + +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.google.android.material.imageview.ShapeableImageView + +class ViewCartItem(private val itemsList: List) : RecyclerView.Adapter() { + + class ViewCartItemHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val image: ShapeableImageView = itemView.findViewById(R.id.cart_item_image) + val title: TextView = itemView.findViewById(R.id.cart_item_title) + val category: TextView = itemView.findViewById(R.id.cart_item_category) + val description: TextView = itemView.findViewById(R.id.cart_item_description) + val price: TextView = itemView.findViewById(R.id.cart_item_price) + } + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): ViewCartItemHolder { + val itemView = LayoutInflater.from(parent.context) + .inflate(R.layout.cart_item, parent, false) + return ViewCartItemHolder(itemView) + } + + override fun onBindViewHolder( + holder: ViewCartItemHolder, + position: Int + ) { + val currentItem = itemsList[position] + holder.image.setImageResource(currentItem.image) + holder.title.text = currentItem.title + holder.category.text = currentItem.category + holder.description.text = currentItem.description + + val price = holder.itemView.context.getString(R.string.price, currentItem.price) + + holder.price.text = price + } + + override fun getItemCount(): Int = itemsList.size +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_cart.xml b/app/src/main/res/layout/activity_cart.xml index 0df2cf3..1ca6259 100644 --- a/app/src/main/res/layout/activity_cart.xml +++ b/app/src/main/res/layout/activity_cart.xml @@ -23,78 +23,88 @@ app:navigationIcon="@drawable/arrow_left" app:title="@string/cart" /> - - + tools:itemCount="4" + tools:listitem="@layout/cart_item" + app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" + /> - + + + + + + + + - + + + + + + + + + - + + + + + - + + + + + + + + + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - \ No newline at end of file + diff --git a/app/src/main/res/layout/cart_item.xml b/app/src/main/res/layout/cart_item.xml new file mode 100644 index 0000000..160aa8f --- /dev/null +++ b/app/src/main/res/layout/cart_item.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml index 90b3592..0c4d046 100644 --- a/app/src/main/res/values-night/colors.xml +++ b/app/src/main/res/values-night/colors.xml @@ -11,4 +11,5 @@ @color/white @color/black #49454F + #DBBCE1 \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 0439860..34ee3c9 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -11,4 +11,5 @@ @color/black @color/white #DDE6E0E9 + #6E5676 \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d04ce3e..dffe8eb 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -19,4 +19,5 @@ Cart Close Item sample + $%1$d \ No newline at end of file From 8855dc0692d2fef360920d6d30ce61d4e5164466 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B0=D0=BB=D1=8C=D0=BD=D0=B8=D0=BA=D0=BE=D0=B2=20?= =?UTF-8?q?=D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0=B8=D0=B9=20=D0=92=D0=BB=D0=B0?= =?UTF-8?q?=D0=B4=D0=B8=D0=BC=D0=B8=D1=80=D0=BE=D0=B2=D0=B8=D1=87?= Date: Wed, 12 Nov 2025 14:26:50 +0300 Subject: [PATCH 6/8] cart ready --- .../homework/viewandresources/CartActivity.kt | 16 ++ app/src/main/res/layout/activity_cart.xml | 168 +++++++++++------- 2 files changed, 115 insertions(+), 69 deletions(-) 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 9381520..be247c6 100644 --- a/app/src/main/java/otus/gpb/homework/viewandresources/CartActivity.kt +++ b/app/src/main/java/otus/gpb/homework/viewandresources/CartActivity.kt @@ -39,6 +39,22 @@ class CartActivity : AppCompatActivity() { CartItem(image = R.drawable.cart_item_sample, title = "Title 2", category = "category", description = "description 2", price = 32), CartItem(image = R.drawable.cart_item_sample, title = "Title 3", category = "category", description = "description 3", price = 32), CartItem(image = R.drawable.cart_item_sample, title = "Title 4", category = "category", description = "description 4", price = 32), + CartItem(image = R.drawable.cart_item_sample, title = "Title 1", category = "category", description = "description 1", price = 32), + CartItem(image = R.drawable.cart_item_sample, title = "Title 2", category = "category", description = "description 2", price = 32), + CartItem(image = R.drawable.cart_item_sample, title = "Title 3", category = "category", description = "description 3", price = 32), + CartItem(image = R.drawable.cart_item_sample, title = "Title 4", category = "category", description = "description 4", price = 32), + CartItem(image = R.drawable.cart_item_sample, title = "Title 1", category = "category", description = "description 1", price = 32), + CartItem(image = R.drawable.cart_item_sample, title = "Title 2", category = "category", description = "description 2", price = 32), + CartItem(image = R.drawable.cart_item_sample, title = "Title 3", category = "category", description = "description 3", price = 32), + CartItem(image = R.drawable.cart_item_sample, title = "Title 4", category = "category", description = "description 4", price = 32), + CartItem(image = R.drawable.cart_item_sample, title = "Title 1", category = "category", description = "description 1", price = 32), + CartItem(image = R.drawable.cart_item_sample, title = "Title 2", category = "category", description = "description 2", price = 32), + CartItem(image = R.drawable.cart_item_sample, title = "Title 3", category = "category", description = "description 3", price = 32), + CartItem(image = R.drawable.cart_item_sample, title = "Title 4", category = "category", description = "description 4", price = 32), + CartItem(image = R.drawable.cart_item_sample, title = "Title 1", category = "category", description = "description 1", price = 32), + CartItem(image = R.drawable.cart_item_sample, title = "Title 2", category = "category", description = "description 2", price = 32), + CartItem(image = R.drawable.cart_item_sample, title = "Title 3", category = "category", description = "description 3", price = 32), + CartItem(image = R.drawable.cart_item_sample, title = "Title 4", category = "category", description = "description 4", price = 32), ) rv.adapter = ViewCartItem(itemsList) diff --git a/app/src/main/res/layout/activity_cart.xml b/app/src/main/res/layout/activity_cart.xml index 1ca6259..1453e17 100644 --- a/app/src/main/res/layout/activity_cart.xml +++ b/app/src/main/res/layout/activity_cart.xml @@ -23,88 +23,118 @@ app:navigationIcon="@drawable/arrow_left" app:title="@string/cart" /> - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From e0716b3a2129b93e2c69a9e8d1b967ada2f97de0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B0=D0=BB=D1=8C=D0=BD=D0=B8=D0=BA=D0=BE=D0=B2=20?= =?UTF-8?q?=D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0=B8=D0=B9=20=D0=92=D0=BB=D0=B0?= =?UTF-8?q?=D0=B4=D0=B8=D0=BC=D0=B8=D1=80=D0=BE=D0=B2=D0=B8=D1=87?= Date: Wed, 12 Nov 2025 21:06:52 +0300 Subject: [PATCH 7/8] dialog --- .../homework/viewandresources/MainActivity.kt | 20 +++- .../main/res/drawable/white_balance_sunny.xml | 1 + app/src/main/res/layout/dialog_signin.xml | 93 ++++++++++++++++++- 3 files changed, 110 insertions(+), 4 deletions(-) create mode 100644 app/src/main/res/drawable/white_balance_sunny.xml 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..72748ec 100644 --- a/app/src/main/java/otus/gpb/homework/viewandresources/MainActivity.kt +++ b/app/src/main/java/otus/gpb/homework/viewandresources/MainActivity.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.widget.Button import androidx.appcompat.app.AppCompatActivity import com.google.android.material.dialog.MaterialAlertDialogBuilder +import com.google.android.material.textfield.TextInputEditText class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { @@ -18,10 +19,23 @@ class MainActivity : AppCompatActivity() { startActivity(Intent(this, CartActivity::class.java)) } + + val builder = MaterialAlertDialogBuilder(this) + val view = layoutInflater.inflate(R.layout.dialog_signin, null) + builder.setView(view) + val dialog = builder.create() + + view.findViewById