jaym0505
10
2021-01-22 01:21:30 작성 2021-01-22 02:22:14 수정됨
1
100

kotlin 안드로이드 매핑 오류


override fun onCreateViewHolder(p0: ViewGroup, p1 : Int) : RecyclerView.ViewHolder{
var view = LayoutInflater.from(p0.context).inflate(R.layout.item_detail,p0,false)
return CustomViewHolder(view)
}


inner class CustomViewHolder(view: View) : RecyclerView.ViewHolder(view) //메모리를 적게 사용하기 위해서
private lateinit var detailviewitem_profile_textview : TextView
override fun getItemCount(): Int {
return contentDTOs.size
}

override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
val viewHolder = (holder as CustomViewHolder).itemView

//UserID
viewHolder.
detailviewitem_profile_textview.text = contentDTOs!!.userId
}
여기 노란줄 친 곳이 오류가 나는데 왜일까요?
viewholder가 문제가 있는거같은데...
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:gravity="center_vertical"
android:layout_width="match_parent"
android:layout_height="50dp">
<ImageView
android:id="@+id/detailviewitem_profile_image"
android:src="@mipmap/ic_launcher"
android:layout_margin="7.5dp"
android:layout_width="35dp"
android:layout_height="35dp"/>
<TextView
android:id="@+id/detailviewitem_profile_textview"
android:text="User name"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
이거는 xml파일입니다 
혹시몰라 첫번째코드 fragment쪽 전부 올리겠습니다 
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()

return view
}
inner class DetailViewRecyclerViewAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
var contentDTOs : ArrayList<ContentDTO> = arrayListOf()
var contentUidList : ArrayList<String> = arrayListOf()

init { //DB에서 데이터 시간순으로 받아오기
firestore?.collection("images")?.orderBy("timestamp")?.addSnapshotListener { querySnapshot, firebaseFirestoreException ->
contentDTOs.clear() //contentDTOs 초기화
contentUidList.clear() //contentDTOs 초기화
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{
var view = LayoutInflater.from(p0.context).inflate(R.layout.item_detail,p0,false)
return CustomViewHolder(view)
}


inner class CustomViewHolder(view: View) : RecyclerView.ViewHolder(view) //메모리를 적게 사용하기 위해서
private lateinit var detailviewitem_profile_textview : TextView
override fun getItemCount(): Int {
return contentDTOs.size
}

override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
val viewHolder = (holder as CustomViewHolder).itemView

//UserID
viewHolder.detailviewitem_profile_textview.text = contentDTOs!!.userId
}
}
}
0
  • 답변 1

  • Willee21
    119
    2021-01-22 09:01:01

    아래처럼.. v를 private 으로 받은 뒤에 view. 으로 접근해서 선언해야

    parent에 정의된 하위 뷰를 가져올 수 있는 것으로 알고 있습니다.


        class ViewHolder(v: View) : RecyclerView.ViewHolder(v) {

            private var view: View = v

            fun bind(listener: View.OnClickListener, item: YoutubeItem) {

                view.thumbnail.setImageDrawable(item.image)

                view.title.text = item.title

                view.setOnClickListener(listener)

            }

  • 로그인을 하시면 답변을 등록할 수 있습니다.