diff --git a/app/src/main/java/com/toyou/toyouandroid/MainActivity.kt b/app/src/main/java/com/toyou/toyouandroid/MainActivity.kt index f2c32f19..05ee5e11 100644 --- a/app/src/main/java/com/toyou/toyouandroid/MainActivity.kt +++ b/app/src/main/java/com/toyou/toyouandroid/MainActivity.kt @@ -1,6 +1,7 @@ package com.toyou.toyouandroid import android.os.Bundle +import android.view.View import com.google.android.material.bottomnavigation.BottomNavigationView import androidx.appcompat.app.AppCompatActivity import androidx.navigation.findNavController @@ -16,7 +17,8 @@ class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(R.layout.activity_main) + binding = ActivityMainBinding.inflate(layoutInflater) + setContentView(binding.root) val navHostFragment = supportFragmentManager.findFragmentById(R.id.fragment_container) as NavHostFragment @@ -25,5 +27,10 @@ class MainActivity : AppCompatActivity() { findViewById(R.id.bottom_navi) .setupWithNavController(navController) + + } + + fun hideBottomNavigation(state:Boolean){ + if(state) binding.bottomNavi.visibility = View.GONE else binding.bottomNavi.visibility=View.VISIBLE } } \ No newline at end of file diff --git a/app/src/main/java/com/toyou/toyouandroid/model/CardModel.kt b/app/src/main/java/com/toyou/toyouandroid/model/CardModel.kt index ba561d0b..a3cd7ac5 100644 --- a/app/src/main/java/com/toyou/toyouandroid/model/CardModel.kt +++ b/app/src/main/java/com/toyou/toyouandroid/model/CardModel.kt @@ -1,3 +1,6 @@ package com.toyou.toyouandroid.model -data class CardModel(val message : String) +data class CardModel( + val message : String, + var isButtonSelected : Boolean = false +) \ No newline at end of file diff --git a/app/src/main/java/com/toyou/toyouandroid/ui/home/CreateFragment.kt b/app/src/main/java/com/toyou/toyouandroid/ui/home/CreateFragment.kt index 54ba4974..8a2cb126 100644 --- a/app/src/main/java/com/toyou/toyouandroid/ui/home/CreateFragment.kt +++ b/app/src/main/java/com/toyou/toyouandroid/ui/home/CreateFragment.kt @@ -9,7 +9,11 @@ import android.view.ViewGroup import androidx.fragment.app.Fragment import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider +import androidx.navigation.NavController +import androidx.navigation.Navigation +import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.LinearLayoutManager +import com.toyou.toyouandroid.MainActivity import com.toyou.toyouandroid.R import com.toyou.toyouandroid.databinding.FragmentCreateBinding import com.toyou.toyouandroid.ui.home.adapter.CardAdapter @@ -23,6 +27,8 @@ class CreateFragment : Fragment(){ private lateinit var cardAdapter : CardAdapter private lateinit var cardViewModel: CardViewModel + lateinit var navController: NavController + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -37,12 +43,28 @@ class CreateFragment : Fragment(){ savedInstanceState: Bundle? ): View? { _binding = FragmentCreateBinding.inflate(inflater, container, false) - cardAdapter = CardAdapter { position -> + + cardViewModel.cards.observe(viewLifecycleOwner, Observer { cards -> + Log.d("CreateFragment", "Loading cards: ${cardViewModel.cards.value}") // 디버그 로그 추가 + cardAdapter.setCards(cards) + }) + + cardAdapter = CardAdapter { position, isSelected -> + cardViewModel.updateButtonState(position, isSelected) Log.d("CreateFragment", "Item clicked at position: $position") + Log.d("CreateFragment", "Item clicked at position: $isSelected, ${cardViewModel.cards.value}") + + if (isSelected == true){ + binding.nextBtn.isEnabled = true + } else{ + binding.nextBtn.isEnabled = false + } } //adapter = cardAdapter + cardViewModel.loadCardData() + binding.cardRv.apply { layoutManager = LinearLayoutManager(requireContext()) @@ -58,24 +80,29 @@ class CreateFragment : Fragment(){ } + val mainActivity = activity as MainActivity // casting + mainActivity.hideBottomNavigation(true) - cardViewModel = ViewModelProvider(this).get(CardViewModel::class.java) - Log.d("CreateFragment", "ViewModel created: ${cardViewModel}") // 로그 추가 - cardViewModel.cards.observe(viewLifecycleOwner, Observer { cards -> - Log.d("CardViewModel", "Loading cards: $cards") // 디버그 로그 추가 - cardAdapter.setCards(cards) - }) + val root: View = binding.root + return root + } - cardViewModel.loadCardData() + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + navController = Navigation.findNavController(view) + binding.backBtn.setOnClickListener { + binding.backBtn.setOnClickListener { + navController.popBackStack() + } + } - val root: View = binding.root - return root } override fun onDestroyView() { super.onDestroyView() + val mainActivity = activity as MainActivity + mainActivity.hideBottomNavigation(false) _binding = null } diff --git a/app/src/main/java/com/toyou/toyouandroid/ui/home/HomeFragment.kt b/app/src/main/java/com/toyou/toyouandroid/ui/home/HomeFragment.kt index 7203df76..539d530d 100644 --- a/app/src/main/java/com/toyou/toyouandroid/ui/home/HomeFragment.kt +++ b/app/src/main/java/com/toyou/toyouandroid/ui/home/HomeFragment.kt @@ -7,12 +7,17 @@ import android.view.ViewGroup import android.widget.TextView import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider +import androidx.navigation.NavController +import androidx.navigation.Navigation +import com.toyou.toyouandroid.R import com.toyou.toyouandroid.databinding.FragmentCreateBinding import com.toyou.toyouandroid.databinding.FragmentHomeBinding class HomeFragment : Fragment() { - private var _binding: FragmentCreateBinding? = null + lateinit var navController: NavController + + private var _binding: FragmentHomeBinding? = null // This property is only valid between onCreateView and // onDestroyView. @@ -26,16 +31,22 @@ class HomeFragment : Fragment() { val homeViewModel = ViewModelProvider(this).get(HomeViewModel::class.java) - _binding = FragmentCreateBinding.inflate(inflater, container, false) + _binding = FragmentHomeBinding.inflate(inflater, container, false) val root: View = binding.root - /*val textView: TextView = binding.textHome - homeViewModel.text.observe(viewLifecycleOwner) { - textView.text = it - }*/ return root } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + navController = Navigation.findNavController(view) + + binding.textHomeBtn.setOnClickListener { + navController.navigate(R.id.action_navigation_home_to_create_fragment) + } + } + + override fun onDestroyView() { super.onDestroyView() _binding = null diff --git a/app/src/main/java/com/toyou/toyouandroid/ui/home/adapter/CardAdapter.kt b/app/src/main/java/com/toyou/toyouandroid/ui/home/adapter/CardAdapter.kt index dc10886b..2192c5a5 100644 --- a/app/src/main/java/com/toyou/toyouandroid/ui/home/adapter/CardAdapter.kt +++ b/app/src/main/java/com/toyou/toyouandroid/ui/home/adapter/CardAdapter.kt @@ -10,7 +10,7 @@ import androidx.recyclerview.widget.RecyclerView import com.toyou.toyouandroid.R import com.toyou.toyouandroid.model.CardModel -class CardAdapter(private val onItemClick: (Int) -> Unit) : RecyclerView.Adapter() { +class CardAdapter(private val onItemClick: (Int, Boolean) -> Unit) : RecyclerView.Adapter() { private var cardList: List = emptyList() fun setCards(cards : List){ @@ -30,25 +30,28 @@ class CardAdapter(private val onItemClick: (Int) -> Unit) : RecyclerView.Adapter override fun getItemCount(): Int = cardList.size - class CardViewHolder(itemView: View, onItemClick: (Int) -> Unit) : RecyclerView.ViewHolder(itemView){ + class CardViewHolder(itemView: View, onItemClick: (Int, Boolean) -> Unit) : RecyclerView.ViewHolder(itemView){ private val cardMessageTextView : TextView = itemView.findViewById(R.id.textMessage) private val button : Button = itemView.findViewById(R.id.button) + private var isSelected: Boolean = false init { button.setOnClickListener { - onItemClick(adapterPosition) - button.isEnabled != button.isEnabled + updateButtonBackground(isSelected) + isSelected = !isSelected + //버튼 클릭 업데이트 후 onItemClick 함수 호출하기! + onItemClick(adapterPosition, isSelected) } } fun bind(card : CardModel){ cardMessageTextView.text = card.message - updateButtonBackground(button.isEnabled) + //card.isButtonSelected = isSelected } - private fun updateButtonBackground(isEnabled: Boolean) { - val backgroundRes = if (isEnabled) R.drawable.create_unclicked_btn else R.drawable.create_clicked_btn + private fun updateButtonBackground(isSelected: Boolean) { + val backgroundRes = if (isSelected) R.drawable.create_clicked_btn else R.drawable.create_unclicked_btn button.setBackgroundResource(backgroundRes) } diff --git a/app/src/main/java/com/toyou/toyouandroid/view_model/CardViewModel.kt b/app/src/main/java/com/toyou/toyouandroid/view_model/CardViewModel.kt index 4b6040ec..d331c5d7 100644 --- a/app/src/main/java/com/toyou/toyouandroid/view_model/CardViewModel.kt +++ b/app/src/main/java/com/toyou/toyouandroid/view_model/CardViewModel.kt @@ -25,4 +25,14 @@ class CardViewModel : ViewModel(){ _cards.value = sampleCards } + + fun updateButtonState(position : Int, isSelected : Boolean){ + _cards.value = _cards.value?.mapIndexed { index, card -> + if (index == position) { + card.copy(isButtonSelected = isSelected) + } else { + card + } + } + } } \ No newline at end of file diff --git a/app/src/main/res/drawable/create_selector_btn.xml b/app/src/main/res/drawable/create_selector_btn.xml index aced9bfb..9a4eb491 100644 --- a/app/src/main/res/drawable/create_selector_btn.xml +++ b/app/src/main/res/drawable/create_selector_btn.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_create.xml b/app/src/main/res/layout/fragment_create.xml index cca56f3b..0e696421 100644 --- a/app/src/main/res/layout/fragment_create.xml +++ b/app/src/main/res/layout/fragment_create.xml @@ -4,6 +4,7 @@ android:layout_width="match_parent" android:layout_height="match_parent"> + - + - diff --git a/app/src/main/res/layout/toolbar.xml b/app/src/main/res/layout/toolbar.xml new file mode 100644 index 00000000..1ad11e5c --- /dev/null +++ b/app/src/main/res/layout/toolbar.xml @@ -0,0 +1,16 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/bottom_navi_item.xml b/app/src/main/res/menu/bottom_navi_item.xml index 45f5d892..847fa9ef 100644 --- a/app/src/main/res/menu/bottom_navi_item.xml +++ b/app/src/main/res/menu/bottom_navi_item.xml @@ -2,7 +2,7 @@ diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml index 09f79513..668fd8ea 100644 --- a/app/src/main/res/navigation/nav_graph.xml +++ b/app/src/main/res/navigation/nav_graph.xml @@ -10,7 +10,12 @@ android:id="@+id/navigation_home" android:name="com.toyou.toyouandroid.ui.home.HomeFragment" android:label="fragment_home" - tools:layout="@layout/fragment_home" /> + tools:layout="@layout/fragment_home" > + + + tools:layout="@layout/fragment_create"> + \ No newline at end of file