인프런 커뮤니티 질문&답변

whdgus928님의 프로필 이미지
whdgus928

작성한 질문수

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

북마크 탭 만들기 - 1

로그문제

작성

·

247

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
 
 
지금 로그가 영상처럼 key값이 나오지 않고 true만 나오는 중인데 뭐가 문제일까요 ㅠㅠㅠㅠㅠ

답변 3

0

개복치개발자님의 프로필 이미지
개복치개발자
지식공유자

이 부분을 왼쪽으로 쭉 끌어당기시면 다른 로그도 보일 것 같아요~

0

whdgus928님의 프로필 이미지
whdgus928
질문자

1.  북마크 텝 만들기 1 (8분 10초 쯤 ..)

2.package com.example.mysolelife.fragments


import android.os.Bundle
import android.provider.ContactsContract
import android.util.Log
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.databinding.DataBindingUtil
import androidx.navigation.findNavController
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.example.mysolelife.R
import com.example.mysolelife.contentsList.BookmarkRVAdapter
import com.example.mysolelife.contentsList.ContentModel
import com.example.mysolelife.databinding.FragmentBookmarkBinding
import com.example.mysolelife.utils.FBAuth
import com.example.mysolelife.utils.FBRef
import com.google.firebase.database.DataSnapshot
import com.google.firebase.database.DatabaseError
import com.google.firebase.database.ValueEventListener


class BookmarkFragment : Fragment() {

private lateinit var binding : FragmentBookmarkBinding

private val TAG = BookmarkFragment::class.java.simpleName

val bookmarkIdList = mutableListOf<String>()
val items = ArrayList<ContentModel>()
val itemKeyList = ArrayList<String>()

lateinit var rvAdapter : BookmarkRVAdapter

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

}

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
binding = DataBindingUtil.inflate(inflater,R.layout.fragment_bookmark,container,false)


//1. 전체 카테고리에 있는 컨텐츠 데이터들을 다 가져옴
getCategoryData()


//2. 사용자가 북마크 한 정보를 다 가져옴

getBookmarkData()

//3. 전체 컨텐츠 중에서, 사용자가 북마크한 정보만 보여줌

rvAdapter = BookmarkRVAdapter(requireContext(),items,itemKeyList,bookmarkIdList)

val rv : RecyclerView = binding.bookmarkRV
rv.adapter = rvAdapter

rv.layoutManager = GridLayoutManager(requireContext(),2)

binding.homeTap.setOnClickListener{ //홈텝 클릭시 어떻게 하겠다 ~
it.findNavController().navigate(R.id.action_bookmarkFragment_to_homeFragment)
}

binding.talkTap.setOnClickListener{
it.findNavController().navigate(R.id.action_bookmarkFragment_to_talkFragment)
}

binding.tipTap.setOnClickListener{
it.findNavController().navigate(R.id.action_bookmarkFragment_to_tipFragment)
}

binding.storeTap.setOnClickListener{
it.findNavController().navigate(R.id.action_bookmarkFragment_to_storeFragment)
}

return binding.root
}


private fun getCategoryData(){

val postListener = object : ValueEventListener { //컨텐츠 아이디 값을 받아오고 있음 firebase에 컨텐츠들을 저장
override fun onDataChange(dataSnapshot: DataSnapshot) {

for (DataModel in dataSnapshot.children){

Log.d(TAG,DataModel.toString())
val item = DataModel.getValue(ContentModel::class.java)
items.add(item!!)
itemKeyList.add(DataModel.key.toString())

}

rvAdapter.notifyDataSetChanged()

}

override fun onCancelled(databaseError: DatabaseError) {
// Getting Post failed, log a message
Log.w("ContentListActivity", "loadPost:onCancelled", databaseError.toException())
}
}
FBRef.category1.addValueEventListener(postListener)
FBRef.category2.addValueEventListener(postListener)

}

private fun getBookmarkData(){

val postListener = object : ValueEventListener { //컨텐츠 아이디 값을 받아오고 있음 firebase에 컨텐츠들을 저장
override fun onDataChange(dataSnapshot: DataSnapshot) {

for (DataModel in dataSnapshot.children){

Log.e(TAG,DataModel.toString())
bookmarkIdList.add(DataModel.key.toString())

}

}

override fun onCancelled(databaseError: DatabaseError) {
// Getting Post failed, log a message
Log.w("ContentListActivity", "loadPost:onCancelled", databaseError.toException())
}
}
FBRef.bookmarkRef.child(FBAuth.getUid()).addValueEventListener(postListener) //FBRef 에 있는 북마크 Ref 값을 가져옴

}


}

3. 에러발생 

8분쯤에 나오는 화면처럼 키값이 무엇이고 벨류 값은 무엇이다 라고 나오는걸 볼 수 있는데 제가 실행하면 아래 사진처럼 "북마크 true" 만 뜨네요 ..

0

개복치개발자님의 프로필 이미지
개복치개발자
지식공유자

아래의 정보를 기입해주시면 도움드릴 수 있을 것 같아요~

Q. 질문은 어떻게 하면 좋을까요?

강의 질문/답변을 남겨주세요. 질문을 주실 때 최대한 많은 정보를 알려주시면 좋습니다. 아래 정보를 모두 주시면 문제를 파악하기 좋습니다 :)

  1. 시청 중인 강의의 부분 (수업 제목 및 타임코드)
    2. 내가 작성한 코드
    3. 에러가 나온다면, 어떻게 나오는지 (에러 내용)
    4. Firebase에 어떤 데이터가 들어있는지
whdgus928님의 프로필 이미지
whdgus928

작성한 질문수

질문하기