簡體   English   中英

我正在嘗試在 Fragment 中顯示 recyclerView,但出現錯誤

[英]I am trying to show recyclerView in Fragment but I am getting error

class FeedRecyclerAdapter (private val postList : ArrayList<Post>) : RecyclerView.Adapter<FeedRecyclerAdapter.PostHolder>() {

class PostHolder(val binding: FragmentDataBinding) : RecyclerView.ViewHolder(binding.root)

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PostHolder {
        val binding = FragmentDataBinding.inflate(LayoutInflater.from(parent.context),parent,false)
        return PostHolder(binding)
}

override fun onBindViewHolder(holder: PostHolder, position: Int) {

    holder.binding.verimText.text = postList.get(position).lsi

}

override fun getItemCount(): Int {
        return postList.size
}

以下是為 recyclerView 編寫的代碼。

private lateinit var postArrayList : ArrayList<Post>



override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    auth = Firebase.auth
    firestore = Firebase.firestore

    postArrayList = ArrayList<Post>()

    getData()

}



override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
): View {
    _binding = FragmentDataBinding.inflate(inflater, container, false)
    val view = binding.root
    val recyclerView = view.findViewById(R.id.recyclerView) as RecyclerView
    recyclerView.layoutManager = LinearLayoutManager(activity)
    recyclerView.adapter = FeedRecyclerAdapter(postArrayList)
    return view

}

private fun getData(){
    firestore.collection("Posts").addSnapshotListener { value, error ->

        if (error!=null){
            Toast.makeText(requireContext(),error.localizedMessage,Toast.LENGTH_SHORT).show()
        }else{
            if (value !=null){
                if (!value.isEmpty){
                    val documents = value.documents
                    for (document in documents){
                        val araziBoyutu = document.get("Arazi Boyutu") as String
                        val araziEgimi = document.get("Arazi Eğimi") as String
                        val panelBoyutu = document.get("Panel Boyutu") as String
                        val panelSayisi = document.get("Panel Sayisi") as String
                        val sehir = document.get("Şehir") as String


                        val post = Post(panelSayisi,panelBoyutu,araziEgimi,araziBoyutu,sehir)
                        postArrayList.add(post)
                    }
                }
            }
        }
    }
}

這里的代碼是我定義 RecyclerView 並保存信息的部分。

我可以拉數據,我可以在firebase上看到,當我用println打印時,我可以在控制台中讀取它,我可以go到應該寫入文本的頁面,但是我看不到這個數據我正在嘗試打印的 verimText TextView。

添加帖子后嘗試調用notifyDataSetChanged()notifyItemRangeInserted()

Recyclerview 應該在onViewCreated方法中聲明

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
            super.onViewCreated(view, savedInstanceState)
       val recyclerView = view.findViewById(R.id.recyclerView) as RecyclerView
       recyclerView.layoutManager = LinearLayoutManager(activity)
       recyclerView.adapter = FeedRecyclerAdapter(postArrayList)
    }

移動這條線

recyclerView.adapter = FeedRecyclerAdapter(postArrayList)

val post = Post(panelSayisi,panelBoyutu,araziEgimi,araziBoyutu,sehir)
postArrayList.add(post)
recyclerView.adapter = FeedRecyclerAdapter(postArrayList)//move to here

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM