inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

whdgus928님의 게시글

whdgus928 whdgus928

@whdgus928

수강평 작성수
-
평균평점
-

게시글 1

질문&답변

로그문제

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 () val items = ArrayList () val itemKeyList = ArrayList () 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
댓글수
3
조회수
321