这段代码是在一个片段内,我有一个回收器视图和数组列表,所有设置代码运行完美,并在数据库中的帖子,并得到我已经输入的日志消息,直到我添加这一行。
postAdapter!.notifyDataSetChanged()
这是我的代码第81行,我已经加粗了,所以你知道我在说什么。
我是一个新的编码,所以任何小的帮助将帮助我。
package com.example.foonection.Fragments
import android.content.Intent
import android.os.Bundle
import android.util.Log
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.example.foonection.AddNewPostActivity
import com.example.foonection.Post
import com.example.foonection.PostAdapter
import com.example.foonection.R
import com.google.firebase.database.DataSnapshot
import com.google.firebase.database.DatabaseError
import com.google.firebase.database.FirebaseDatabase
import com.google.firebase.database.ValueEventListener
import kotlinx.android.synthetic.main.fragment_feed_seller.view.*
import java.util.ArrayList
/**
* A simple [Fragment] subclass.
*/
class FeedSellerFragment : Fragment() {
private var postAdapter: PostAdapter? = null
private var postList: MutableList<Post>? = null
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
val view = inflater.inflate(R.layout.fragment_feed_seller, container, false)
var recyclerView: RecyclerView? = null
recyclerView = view.findViewById(R.id.timeline_view_feed)
val linearLayoutManger = LinearLayoutManager(context)
linearLayoutManger.reverseLayout = true
linearLayoutManger.stackFromEnd = true
recyclerView.layoutManager = linearLayoutManger
postList = ArrayList()
postAdapter = context?.let { PostAdapter(it,postList as ArrayList<Post>) }
recyclerView.adapter = postAdapter
retrievePosts()
view.add_post_feed_btn.setOnClickListener {
Log.d("Log","Add Post btn Clicked")
val intent = Intent(context, AddNewPostActivity::class.java)
startActivity(intent)
}
return view
}
private fun retrievePosts(){
Log.d("Log","Trying To Retrieve Posts")
val postsRef = FirebaseDatabase.getInstance().reference.child("Posts")
postsRef.addValueEventListener(object : ValueEventListener{
override fun onDataChange(p0: DataSnapshot) {
postList?.clear()
if (p0.exists())
{
Log.d("Log","p0 is existed")
for (snapshot in p0.children)
{
Log.d("Log","for loop snapshot")
val post = snapshot.getValue(Post :: class.java)
postList!!.add(post!!)
**postAdapter!!.notifyDataSetChanged()**
}
}
}
override fun onCancelled(p0: DatabaseError) {
}
})
}
}
像这样调用notifyDataSetChanged
postAdapter?.let{
it.notifyDataSetChanged()
}