Skip to content

Commit

Permalink
feat : viewModel 사용 #3
Browse files Browse the repository at this point in the history
  • Loading branch information
SeonHwan-Kim committed Apr 20, 2023
1 parent e73ca02 commit 1a09339
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 17 deletions.
7 changes: 7 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -52,4 +52,11 @@ dependencies {

// ConcatAdapter
implementation "androidx.recyclerview:recyclerview:1.3.0"

// ViewModel 사용하기
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1"

// ViewModel 생성함수를 편하게 사용하고 싶다면?
implementation "androidx.fragment:fragment-ktx:1.5.7"
implementation "androidx.activity:activity-ktx:1.7.1"
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.viewModels
import androidx.recyclerview.widget.ConcatAdapter
import androidx.recyclerview.widget.LinearLayoutManager
import org.android.go.sopt.R
Expand All @@ -16,16 +17,7 @@ class HomeFragment : Fragment() {
private val binding: FragmentHomeBinding
get() = requireNotNull(_binding) { "앗!_binding이 null이다!" }

private val mockDogList = listOf<Dog>(
Dog("포메라니안", R.drawable.img_pomeranian, SIZE_SMALL),
Dog("말티즈", R.drawable.img_maltese, SIZE_SMALL),
Dog("토이 푸들", R.drawable.img_toy_poodle, SIZE_SMALL),
Dog("웰시코기", R.drawable.img_welshi_corgi, SIZE_MEDIUM),
Dog("진돗개", R.drawable.img_jindo, SIZE_MEDIUM),
Dog("비글", R.drawable.img_beagle, SIZE_MEDIUM),
Dog("골든 리트리버", R.drawable.img_golden_retriever, SIZE_LARGE),
Dog("셰퍼드", R.drawable.img_shepherd, SIZE_LARGE)
)
private val viewModel by viewModels<HomeViewModel>()

override fun onCreateView(
inflater: LayoutInflater,
Expand All @@ -40,7 +32,7 @@ class HomeFragment : Fragment() {
super.onViewCreated(view, savedInstanceState)
val titleAdapter = TitleAdapter(requireContext())
val dogAdapter = DogAdapter(requireContext())
dogAdapter.setDogList(mockDogList)
dogAdapter.setDogList(viewModel.mockDogList)
binding.rvHomeDog.adapter = ConcatAdapter(titleAdapter, dogAdapter)
}

Expand All @@ -52,10 +44,4 @@ class HomeFragment : Fragment() {
fun scrollToTop() {
binding.rvHomeDog.smoothScrollToPosition(0)
}

companion object {
private const val SIZE_SMALL = "소형견"
private const val SIZE_MEDIUM = "중형견"
private const val SIZE_LARGE = "대형견"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package org.android.go.sopt.presentation.main

import androidx.lifecycle.ViewModel
import org.android.go.sopt.R
import org.android.go.sopt.data.Dog

class HomeViewModel: ViewModel() {
val mockDogList = listOf<Dog>(
Dog("포메라니안", R.drawable.img_pomeranian, SIZE_SMALL),
Dog("말티즈", R.drawable.img_maltese, SIZE_SMALL),
Dog("토이 푸들", R.drawable.img_toy_poodle, SIZE_SMALL),
Dog("웰시코기", R.drawable.img_welshi_corgi, SIZE_MEDIUM),
Dog("진돗개", R.drawable.img_jindo, SIZE_MEDIUM),
Dog("비글", R.drawable.img_beagle, SIZE_MEDIUM),
Dog("골든 리트리버", R.drawable.img_golden_retriever, SIZE_LARGE),
Dog("셰퍼드", R.drawable.img_shepherd, SIZE_LARGE)
)

companion object {
private const val SIZE_SMALL = "소형견"
private const val SIZE_MEDIUM = "중형견"
private const val SIZE_LARGE = "대형견"
}
}

0 comments on commit 1a09339

Please sign in to comment.