diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6b04610..c5c7e98 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -13,9 +13,6 @@ android:supportsRtl="true" android:theme="@style/Theme.Project" tools:targetApi="31"> - @@ -31,6 +28,7 @@ + adapter.updateList(list) } diff --git a/app/src/main/java/com/example/projectfigma/Adapters/MainBestSellerAdapter.kt b/app/src/main/java/com/example/projectfigma/Adapters/MainBestSellerAdapter.kt new file mode 100644 index 0000000..379d2da --- /dev/null +++ b/app/src/main/java/com/example/projectfigma/Adapters/MainBestSellerAdapter.kt @@ -0,0 +1,52 @@ +package com.example.projectfigma.Adapters + +import android.net.Uri +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide +import com.example.projectfigma.Entites.Dishes +import com.example.projectfigma.R + +class MainBestSellerAdapter (private var dishes: List) : + RecyclerView.Adapter() { + + inner class DishViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val image: ImageView = itemView.findViewById(R.id.dishImage) + val title: TextView = itemView.findViewById(R.id.dishTitle) + val description: TextView = itemView.findViewById(R.id.dishDescription) + val price: TextView = itemView.findViewById(R.id.dishPrice) + val rating: TextView = itemView.findViewById(R.id.tvRating) + val category: ImageView = itemView.findViewById(R.id.iconCategory) + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): DishViewHolder { + val view = LayoutInflater.from(parent.context).inflate(R.layout.item_dish_best_seller, parent, false) + return DishViewHolder(view) + } + + override fun onBindViewHolder(holder: DishViewHolder, position: Int) { + val dish = dishes[position] + + // Используем Glide для загрузки изображения + Glide.with(holder.itemView.context) + .load(Uri.parse(dish.imageUri)) + .into(holder.image) + + holder.category.setImageResource(dish.category.iconRes) + holder.title.text = dish.name + holder.description.text = dish.description + holder.price.text = "$${dish.price}" + holder.rating.text = "${dish.rating}" + } + + override fun getItemCount(): Int = dishes.size + + fun updateData(newList: List) { + dishes = newList + notifyDataSetChanged() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/projectfigma/Fragments/BestSeller.kt b/app/src/main/java/com/example/projectfigma/Fragments/BestSeller.kt index a951294..e4d19ee 100644 --- a/app/src/main/java/com/example/projectfigma/Fragments/BestSeller.kt +++ b/app/src/main/java/com/example/projectfigma/Fragments/BestSeller.kt @@ -1,10 +1,15 @@ package com.example.projectfigma.Fragments +import android.content.Intent import android.os.Bundle import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.TextView +import com.example.projectfigma.Activity.AdverstsingPageActivity +import com.example.projectfigma.Activity.BestSellerActivity +import com.example.projectfigma.Activity.RegActivity import com.example.projectfigma.R import com.example.projectfigma.databinding.FragmentBestSellerBinding import com.example.projectfigma.databinding.FragmentDividingLineBinding @@ -12,7 +17,7 @@ import com.example.projectfigma.databinding.FragmentDividingLineBinding class BestSeller : Fragment() { private var _binding: FragmentBestSellerBinding? = null - private val binding get() = _binding!! + private val binding get() = _binding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -24,6 +29,13 @@ class BestSeller : Fragment() { savedInstanceState: Bundle? ): View { _binding = FragmentBestSellerBinding.inflate(inflater, container, false) - return binding.root + + binding?.tvViewAll?.setOnClickListener{ + val intent = Intent(requireContext(), BestSellerActivity::class.java) + startActivity(intent) + requireActivity().finish() + } + + return binding!!.root } } \ No newline at end of file diff --git a/app/src/main/java/com/example/projectfigma/Fragments/MainBestSeller.kt b/app/src/main/java/com/example/projectfigma/Fragments/MainBestSeller.kt new file mode 100644 index 0000000..132688b --- /dev/null +++ b/app/src/main/java/com/example/projectfigma/Fragments/MainBestSeller.kt @@ -0,0 +1,41 @@ +package com.example.projectfigma.Fragments + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.example.projectfigma.Adapters.MainBestSellerAdapter +import com.example.projectfigma.DAO.DishesDao +import com.example.projectfigma.DataBase.DataBase +import com.example.projectfigma.Entites.Dishes +import com.example.projectfigma.R + +class MainBestSeller : Fragment(R.layout.fragment_main_best_seller) { + + private lateinit var recyclerView: RecyclerView + private lateinit var adapter: MainBestSellerAdapter + private lateinit var database: DataBase + private lateinit var dishesDao: DishesDao + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + recyclerView = view.findViewById(R.id.popularRecyclerView) + recyclerView.layoutManager = GridLayoutManager(context, 2) + + database = DataBase.getDb(requireContext()) + dishesDao = database.getDishesDao() + + dishesDao.getBestSellers().observe(viewLifecycleOwner) { dishList -> + adapter = MainBestSellerAdapter(dishList) + recyclerView.adapter = adapter + } + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_best_seller.xml b/app/src/main/res/layout/activity_best_seller.xml index 23e17b8..3bf586e 100644 --- a/app/src/main/res/layout/activity_best_seller.xml +++ b/app/src/main/res/layout/activity_best_seller.xml @@ -4,8 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="@drawable/background" - tools:context=".BestSellerActivity"> + android:background="@drawable/background"> + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.656" /> + app:layout_constraintVertical_bias="0.632" /> - - + + + app:layout_constraintTop_toBottomOf="@+id/headerLayout"> - - - - + android:layout_height="match_parent" + tools:layout="@layout/fragment_main_best_seller" /> - - + - - - - - - - - - - - + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" /> diff --git a/app/src/main/res/layout/fragment_main_best_seller.xml b/app/src/main/res/layout/fragment_main_best_seller.xml new file mode 100644 index 0000000..dc800e2 --- /dev/null +++ b/app/src/main/res/layout/fragment_main_best_seller.xml @@ -0,0 +1,36 @@ + + + + + + + + diff --git a/app/src/main/res/layout/item_dish_best_seller.xml b/app/src/main/res/layout/item_dish_best_seller.xml index 2b9606b..79d7f3c 100644 --- a/app/src/main/res/layout/item_dish_best_seller.xml +++ b/app/src/main/res/layout/item_dish_best_seller.xml @@ -1,131 +1,161 @@ - + android:orientation="vertical" + android:layout_margin="8dp"> - - - + + - + + + - - - - - - - - - + + - - + + + + + + + + + + + + + + - - - - - - - + android:layout_gravity="center" + android:text="5.0" + android:textColor="@android:color/white" + android:textSize="12sp" /> + + + + + + + + - - + diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 1eb1848..8ee1ec4 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -17,4 +17,34 @@ @drawable/indicator_selected + + + + + + + + + + + diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 685f141..0bc321c 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -1,14 +1,20 @@