• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    미해결

DetailViewFragment 화면 오류

21.04.30 13:17 작성 조회수 137

0

이런식으로 DetailViewFragment에서 이런식으로 코드를 짜주었는데 앱을 실행시키면 반영이 안되고 전에 설정해주었던 색만 뜹니다.. 무슨 오류일까요

ackage com.example.instargram_cloncoding.navigation

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
import com.example.instargram_cloncoding.R
import com.example.instargram_cloncoding.navigation.DataModle.ContentDTO
import com.google.firebase.firestore.FirebaseFirestore
import com.google.firebase.firestore.QuerySnapshot


class DetailViewFragment : Fragment(){
//데이터베이스에 저장하기 위해
var firestore : FirebaseFirestore? = null


override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {

var view = LayoutInflater.from(activity).inflate(R.layout.fragment_detail,container,false)//프레그먼트 레이아웃 받아오는 부분
firestore = FirebaseFirestore.getInstance()

view.findViewById<RecyclerView>(R.id.DetailViewfFagment_Recyclerview).adapter = DetailViewRecyclerViewAdapter()
view.findViewById<RecyclerView>(R.id.DetailViewfFagment_Recyclerview).layoutManager = LinearLayoutManager(activity)


return view
}

//디테일뷰의 아이템과 디테일뷰 layout을 합치는 어뎁터
inner class DetailViewRecyclerViewAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder>(){
var contentDTOs : ArrayList<ContentDTO> = arrayListOf()
var contentUIDList : ArrayList<String> = arrayListOf()
var querySnapshot : QuerySnapshot? = null

init {
//시간순으로 이미지들을 받아오고 만약 연결된 주소의 데이터가 바뀌면 바때마다 자동으로 업데이트해줌
firestore?.collection("images")?.orderBy("timestamp")
?.addSnapshotListener{ querySnapshot, firebaseFirestoreExcepthion ->
contentDTOs.clear()
contentUIDList.clear()
for (snapshot in querySnapshot!!.documents) {
var item = snapshot.toObject(ContentDTO::class.java)
contentDTOs.add(item!!)
contentUIDList.add(snapshot.id)
}
notifyDataSetChanged()//값 새로고침 자동으로!
}
}

//화면을 최초 로딩하여 만들어진 View가 없는 경우, xml파일을 inflate하여 ViewHolder를 생성한다.
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
var view = LayoutInflater.from(parent.context).inflate(R.layout.item_detail,parent,false)
return CustomViewHolder(view)
}

//굳이 클래스를 만들어서 리턴해주는이유는 메모리사용량때문에 그렇다. 딱히 사용하지 않아도 문제는 되지 않는다.
inner class CustomViewHolder(view: View): RecyclerView.ViewHolder(view)

//위의 onCreateViewHolder에서 만든 view와 실제 입력되는 각각의 데이터를 연결한다.
//서버에서 넘어온 데이터들을 연결!
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {

val viewholder = (holder as CustomViewHolder).itemView

viewholder.findViewById<TextView>(R.id.detailviewitem_profile_nameTextview).text = contentDTOs[position].userId

//Image
Glide.with(holder.itemView.context).load(contentDTOs[position].imageUrl).into(viewholder.findViewById(R.id.detailviewitem_imageview_content))
//Explain of content
viewholder.findViewById<TextView>(R.id.detailviewitem_explan_textview).text = contentDTOs[position].explain

//likes
viewholder.findViewById<TextView>(R.id.detailviewitem_favoriteconter_textview).text = "Likes" + contentDTOs!![position].favoriteCount

//Profile Image
Glide.with(holder.itemView.context).load(contentDTOs[position].imageUrl).into(viewholder.findViewById(R.id.detailviewitem_profile_image))
//
// //User Id
// var profile = binding.detailviewitemProfileNameTextview
//
// //User Id 유저 이름
// profile.text = contentDTOs!![position].userId
//
// //Image 사진
// Glide.with(holder.itemView.context).load(contentDTOs!![position].imageUrl).into(binding.detailviewitemImageviewContent)
//
// //Explan 유저글
// binding.detailviewitemExplanTextview.text = contentDTOs!![position].explain
//
// //Likes 좋아요 개수 카운트
// binding.detailviewitemFavoriteconterTextview.text = "Liks" + contentDTOs!![position].favoriteCount
//
// //ProfileImage 유저 프로파일 이미지 즉, 프로필사진
// Glide.with(holder.itemView.context).load(contentDTOs!![position].imageUrl).into(binding.detailviewitemProfileImage)
}
//RecyclerView로 만들어지는 item의 총 개수를 반환한다.
override fun getItemCount(): Int {
return contentDTOs.size
}
}

}

답변 0

답변을 작성해보세요.

답변을 기다리고 있는 질문이에요.
첫번째 답변을 남겨보세요!