Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,8 @@ import com.bumptech.glide.Glide
import com.lab.keyneez.data.entity.LikeData
import com.lab.keyneez.databinding.ItemLikeContentBinding

class LikeAdapter :
RecyclerView.Adapter<LikeAdapter.getViewHolder>() {
var data = mutableListOf<LikeData>()
class LikeAdapter : RecyclerView.Adapter<LikeAdapter.getViewHolder>() {
var data = listOf<LikeData>()

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): getViewHolder {
val binding =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package com.lab.keyneez.presentation.main.like

import android.os.Bundle
import android.view.View
import androidx.fragment.app.viewModels
import androidx.recyclerview.widget.GridLayoutManager
import com.lab.keyneez.R
import com.lab.keyneez.data.entity.LikeData
Expand All @@ -13,73 +14,46 @@ class LikeFragment : BindingFragment<FragmentLikeBinding>(R.layout.fragment_like
// private val likeViewModel by viewModels<LikeViewModel>()
lateinit var likeAdapter: LikeAdapter
val data = mutableListOf<LikeData>()
val viewModel: LikeViewModel by viewModels()
// liveData는 observer 패턴을 기반으로 하며 뷰모델과 뷰 간의 통신을 쉽게 한다.
// 또한 데이터 변경을 관찰하고 데이터를 자동으로 업데이트한다.

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
initLikeAdapter()
initLikeClickListener()
initLikeSaveClickListener()
initLikeSearchClickListener()
setupLikeData()
}

private fun initLikeSearchClickListener() {
binding.btnLikeSearch.setOnClickListener {
// 검색화면으로 이동
}
}

private fun initLikeClickListener() {
private fun initLikeSaveClickListener() {
binding.btnLikeSave.setOnClickListener {
binding.rvLikeContent.smoothScrollToPosition(0)
}
}

private fun setupLikeData() {
// ViewModel을 observe하는 부분을 사용하면 된다.
// 뷰모델에서 likelist가 바뀔 때마다 자동적으로 호출되어 바꿔줌
// viewLifecycleOwner 대신에 액티비티에서는 this를 사용해 준다.
// 상태 변경을 자동으로 알린다.
viewModel.likeList.observe(viewLifecycleOwner) { it ->
// 어댑터에서 mutablelist썼으면 뷰홀더에서도 mutablelist를 사용하고 어댑터에서 listOf를 썼으면 뷰홀더에서도 통일하기
likeAdapter.data = it
likeAdapter.notifyDataSetChanged()
}
}

private fun initLikeAdapter() {
likeAdapter = LikeAdapter()
binding.rvLikeContent.adapter = likeAdapter
binding.rvLikeContent.layoutManager = GridLayoutManager(activity, 2)
data.apply {
add(
LikeData(
background = R.drawable.img_like_background,
date = "12.4.12-10",
title = "청소년 영화관 할인"
)
)
add(
LikeData(
background = R.drawable.img_like_background,
date = "12.11-12.17",
title = "청소년 미술관 할인"
)
)
add(
LikeData(
background = R.drawable.img_like_background,
date = "12.18-12.24",
title = "청소년 공연장 할인"
)
)
add(
LikeData(
background = R.drawable.img_like_background,
date = "12.25-12.31",
title = "청소년 박물관 할인"
)
)
add(
LikeData(
background = R.drawable.img_like_background,
date = "1.1-1.7",
title = "청소년 서점 할인"
)
)
add(
LikeData(
background = R.drawable.img_like_background,
date = "1.8-1.14",
title = "청소년 강의 할인"
)
)

likeAdapter.data = data
likeAdapter.notifyDataSetChanged()
}
}

companion object {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,59 @@
package com.lab.keyneez.presentation.main.like

import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import com.lab.keyneez.R
import com.lab.keyneez.data.entity.LikeData

class LikeViewModel : ViewModel()
class LikeViewModel : ViewModel() {
// binding하는 방식으로 선언해 주기!
private val _likeList = MutableLiveData<List<LikeData>>()
val likeList: LiveData<List<LikeData>>
get() = _likeList

init {
// viewModel을 실행할 때 getLikeList를 제일 먼저 가져와 주세요
// init 함수는 매개변수가 없고 반환되는 값이 없는 특별한 함수이다.
// 생성자를 통해 인스턴스를 만들어 질 때 생성되는 함수이다.
// 생성자를 초기화할 수 있다.
getLikeList()
}

private fun getLikeList() {
// 코틀린은 자동적으로 타입을 추론해 주기 때문에 굳이 타입을 안 써줘도 된다.
val LikeDatas = listOf(
LikeData(
background = R.drawable.img_like_background,
date = "12.4.12-10",
title = "청소년 영화관 할인"
),
LikeData(
background = R.drawable.img_like_background,
date = "12.11-12.17",
title = "청소년 미술관 할인"
),
LikeData(
background = R.drawable.img_like_background,
date = "12.18-12.24",
title = "청소년 공연장 할인"
),
LikeData(
background = R.drawable.img_like_background,
date = "12.25-12.31",
title = "청소년 박물관 할인"
),
LikeData(
background = R.drawable.img_like_background,
date = "1.1-1.7",
title = "청소년 서점 할인"
),
LikeData(
background = R.drawable.img_like_background,
date = "1.8-1.14",
title = "청소년 강의 할인"
)
)
_likeList.value = LikeDatas
}
}