묻고 답해요
143만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
북마크 탭에서 북마크 취소 시 문제
안녕하세요. 북마크 진행하다가 북마크 탭에서 북마크를 삭제하는 부분에서 문제가 생겨 질문 올립니다.아래 상태에서북마크를 취소하기위해 클릭하면이렇게 제가 누른 부분은 사라지지만(이 부분은 제가 클릭했을 때 bookmarkIdList에 KeyList가 없다면 사라지게 해놓은 겁니다) 또 중복으로 아이템이 생깁니다. 계속 시도해봤는데 어디서 고쳐야할지 잘 모르겠습니다.아래는 BookmarkRVAdapter.kt의 코드입니다. 편하실 때 답변해주시면 감사하겠습니다!package com.bokchi.mysolelife.contentsList import android.content.Context import android.content.Intent import android.util.Log 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.bokchi.mysolelife.R import com.bokchi.mysolelife.utils.FBAuth import com.bokchi.mysolelife.utils.FBRef import com.bumptech.glide.Glide class BookmarkRVAdapter(val context : Context, val items : ArrayList<ContentModel>, val keyList : ArrayList<String>, val bookmarkIdList : MutableList<String> ) : RecyclerView.Adapter<BookmarkRVAdapter.Viewholder>() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BookmarkRVAdapter.Viewholder { val v = LayoutInflater.from(parent.context).inflate(R.layout.content_rv_item, parent, false) Log.d("RVAdapterB", "key List : " + keyList.toString()) Log.d("RVAdapterB","Bookmark List : " + bookmarkIdList.toString()) return Viewholder(v) } override fun onBindViewHolder(holder: BookmarkRVAdapter.Viewholder, position: Int) { holder.bindItems(items[position], keyList[position]) } override fun getItemCount(): Int { return items.size } inner class Viewholder(itemView : View) : RecyclerView.ViewHolder(itemView) { fun bindItems(item : ContentModel, key : String) { itemView.setOnClickListener { val intent = Intent(context, ContentShowActivity::class.java) intent.putExtra("url", item.webUrl) itemView.context.startActivity(intent) } val ContentTitle = itemView.findViewById<TextView>(R.id.TextArea) val imageViewArea = itemView.findViewById<ImageView>(R.id.imageArea) val bookmarkArea = itemView.findViewById<ImageView>(R.id.BookmarkArea) if(bookmarkIdList.contains(key)) { // bookmarkIdList가 KeyList에 있는 정보를 가지고 있다면 bookmarkArea.setImageResource(R.drawable.bookmark_color) } else { bookmarkArea.setImageResource(R.drawable.bookmark_white) } ContentTitle.text = item.title Glide.with(context) .load(item.imageUrl) .into(imageViewArea) bookmarkArea.setOnClickListener { // 북마크를 누르면 실행되는 내용 // 북마크를 클릭했을 때, 북마크가 있는 경우 -> 북마크 삭제 if(bookmarkIdList.contains(key)) { ContentTitle.visibility = View.GONE imageViewArea.visibility = View.GONE bookmarkArea.visibility = View.GONE FBRef.bookmarkRef .child(FBAuth.getUid()) .child(key) .removeValue() } } if(bookmarkIdList.isEmpty()) { ContentTitle.visibility = View.GONE imageViewArea.visibility = View.GONE bookmarkArea.visibility = View.GONE } Log.e("BOOKMARK", bookmarkIdList.toString()) } } }
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
북마크부분 오류나서 질문드려요!