강의

멘토링

로드맵

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

whdgus928님의 프로필 이미지
whdgus928

작성한 질문수

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

북마크 탭 만들기 - 1

로그문제

작성

·

301

0

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

퀴즈

What are the object and method primarily used when passing data between Android Activities?

Bundle and setData()

Intent and putExtra()

ActivityManager and transferData()

Context and passData()

답변 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

작성한 질문수

질문하기