繁体   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