해결된 질문
작성
·
294
0
안녕하세요
게시물 업로드하기 부분을 기반으로 fragment 명 정도만 살짝씩 수정하며 따라하다가 오류가 생겨 문의 남깁니다.
정확히는 코드 자체에 오류는 없는데 홈화면에 게시물이 뜨지 않습니다.
파이어베이스에 데이터들이 업로드 되어 있는 것을 확인하였습니다.
xml id등도 동일하고요
코드 자체를 잘못 타이핑했는지,
혹은 안드로이드 스튜디오 등의 업데이트가 진행되면서 오류가 생긴 건지 궁금합니다.
-xml view id를 인식하지 못해 findViewByID로 인식하도록 코드를 수정했습니다.
package com.example.guru26
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.google.firebase.firestore.FirebaseFirestore
import java.util.*
import com.bumptech.glide.Glide
class HomeFragment : Fragment() {
var firestore : FirebaseFirestore? = null
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View?
{
// Inflate the layout for this fragment
var view = LayoutInflater.from(activity).inflate(R.layout.fragment_home, container, false)
firestore = FirebaseFirestore.getInstance()
view.findViewById<RecyclerView>(R.id.rv_poster).adapter = PosterAdapter()
view.findViewById<RecyclerView>(R.id.rv_poster).layoutManager = LinearLayoutManager(activity)
return view
}
inner class PosterAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
var contentDTOs : ArrayList<ContentDTO > = arrayListOf()
private var contentUidList :ArrayList<String> = arrayListOf()
init {
firestore?.collection("images")?.orderBy("timestamp")?.addSnapshotListener { querySnapshot, FirebaseFirestoreException ->
contentDTOs.clear()
contentUidList.clear()
for(snapshot in querySnapshot!!.documents){
var item = snapshot. toObject(ContentDTO::class.java)
contentDTOs.add(item!!)
contentUidList.add(snapshot.id)
}
notifyDataSetChanged()
}
}
override fun onCreateViewHolder(p0: ViewGroup, p1: Int): RecyclerView.ViewHolder {
val view = LayoutInflater.from(p0.context).inflate(R.layout.list_item, p0, false)
return CustomViewHolder(view)
}
inner class CustomViewHolder (view : View) : RecyclerView.ViewHolder(view){}
override fun getItemCount(): Int {
return contentDTOs.size
}
override fun onBindViewHolder(p0: RecyclerView.ViewHolder, p1: Int) {
var viewholder = (p0 as CustomViewHolder).itemView
//UserID
viewholder.findViewById<TextView>(R.id.tv_name).text= contentDTOs!![p1].exhName
viewholder.findViewById<TextView>(R.id.tv_start_date).text= contentDTOs!![p1].exhStartDay
viewholder.findViewById<TextView>(R.id.tv_end_date).text= contentDTOs!![p1].exhEndDay
viewholder.findViewById<TextView>(R.id.tv_place).text= contentDTOs!![p1].exhPlace
//Image
Glide.with(p0.itemView.context).load(contentDTOs!![p1].imageUrl).into(viewholder.findViewById(R.id.iv_poster))
}
}
}
답변