inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

북마크 탭에서 북마크 취소 시 문제

해결됨

[초급편] 안드로이드 커뮤니티 앱 만들기(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
  • firebase
  • 북마크
euphony 댓글 2 좋아요 0 조회수 792

북마크부분 오류나서 질문드려요!

미해결

[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)

(사진)

  • 북마크
  • firebase
  • kotlin
  • android
승준 댓글 1 좋아요 0 조회수 253

인기 태그

인프런 TOP Writers

주간 인기글