반응형
뷰홀더에서 클릭시 로그를 찍어봤을때 adapterposition이 나오게 되는것을 확인할 수 있다.
그렇다는것은 이미지도 여기서 설정을 해줄 수 있지 않을까 생각한다.
그리고 다음에 혹시 뭐 즐겨찾기 추가를 했을때 그에 대해서 서버에 통신을 보내주면서 추가를 해주는것도 앞으로 가능하다고 생각한다.
class RestaurantAdapter(var restaurantList: List<Data>) : RecyclerView.Adapter<RestaurantAdapter.RestaurantViewHolder>(){
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RestaurantViewHolder {
val binding = RestaurantListBinding.inflate(LayoutInflater.from(parent.context),parent,false)
return RestaurantViewHolder(binding)
}
override fun onBindViewHolder(holder: RestaurantViewHolder, position: Int) {
holder.bind(restaurantList[position])
}
override fun getItemCount(): Int {
return restaurantList.size
}
inner class RestaurantViewHolder(val binding : RestaurantListBinding) : RecyclerView.ViewHolder(binding.root){
@SuppressLint("SetTextI18n")
fun bind(data: Data){
with(binding){
var isFavorite : Boolean = false
tvListName.text = data.name
tvListAddress.text = data.address
tvSerial.text = "${data.serial}."
ivAddFavorite.setOnClickListener {
if(!isFavorite)
ivAddFavorite.setImageResource(R.drawable.ic_home_addfavorite)
else
ivAddFavorite.setImageResource(R.drawable.ic_home_favorite)
isFavorite = !isFavorite
}
}
}
}
}
리사이클러뷰 어댑터를 우선 기본적인 틀을 구성을 해주는데
with(binding){
var isFavorite : Boolean = false
ivAddFavorite.setOnClickListener {
if(!isFavorite)
ivAddFavorite.setImageResource(R.drawable.ic_home_addfavorite)
else
ivAddFavorite.setImageResource(R.drawable.ic_home_favorite)
isFavorite = !isFavorite
}
이 fun bind함수를 통해 데이터를 bind함과 동시에 클릭을 했을때에 대해서 이미지를 바꿔주는 작업을 진행하였다.
val restaurantAdapter = RestaurantAdapter(result.data)
binding.rvRestaurant.adapter = restaurantAdapter
이제 메인문에 어댑터를 연결하게 된다면 연결이 되는 상황이 나오게 된다.
반응형
'Android & Kotlin > Android' 카테고리의 다른 글
[안드로이드 코틀린] 리사이클러뷰 뷰타입에 따른 설정 (실습 : 채팅방) (0) | 2023.05.13 |
---|---|
[안드로이드 코틀린] 바텀네비게이션 프래그먼트 전환시 상태 유지 (0) | 2023.05.09 |
[코틀린] 안드로이드 플로팅버튼 이미지 조절, 버튼 클릭시 최상단, 스크롤이벤트 (0) | 2022.12.29 |
viewpager2 이미지 자동 스크롤 (recyclerview활용) (2) | 2022.12.28 |
[코틀린] 안드로이드 sharedpreferences 개념 및 활용 예제 (0) | 2022.12.03 |
댓글