Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在firebase recyclerview android中实现分页或无限滚动_Android_Firebase_Firebase Realtime Database_Pagination_Infinite Scroll - Fatal编程技术网

如何在firebase recyclerview android中实现分页或无限滚动

如何在firebase recyclerview android中实现分页或无限滚动,android,firebase,firebase-realtime-database,pagination,infinite-scroll,Android,Firebase,Firebase Realtime Database,Pagination,Infinite Scroll,我正在做一个firebase实时数据库android项目。我构建了一个feed系统,它显示所有用户的帖子,但同时对所有数据进行排序。我需要显示10个职位,然后显示进度条,然后加载10个其他等 探索片段 class ExploreFragment : Fragment() { private var postAdapter:PostAdapter? = null private var postList: MutableList<Post>? = null override fun o

我正在做一个firebase实时数据库android项目。我构建了一个feed系统,它显示所有用户的帖子,但同时对所有数据进行排序。我需要显示10个职位,然后显示进度条,然后加载10个其他等

探索片段

class ExploreFragment : Fragment() {
private var postAdapter:PostAdapter? = null
private var postList: MutableList<Post>? = null
override fun onCreateView(
    recyclerView.layoutManager = linearLayoutManager
    postList= ArrayList()
    postAdapter = context?.let { PostAdapter(it,postList as ArrayList<Post>) }
    recyclerView.adapter = postAdapter
    retrievePosts()
    return view
}
private fun retrievePosts() {
    val postRef = FirebaseDatabase.getInstance().reference.child("Posts")
    postRef.addValueEventListener(object :ValueEventListener{
        override fun onDataChange(p0: DataSnapshot) {
            if (p0.exists()){
                postList!!.clear()
                for (snapshot in p0.children){
                    val post = snapshot.getValue(Post::class.java)!!
                    (postList as ArrayList<Post>).add(post)
                }
               postAdapter?.notifyDataSetChanged()
            }
        }
        override fun onCancelled(p0: DatabaseError) {
        }
    })
}}
class-ExploreFragment:Fragment(){
专用变量postAdapter:postAdapter?=null
私有变量postList:MutableList?=null
覆盖创建视图(
recyclerView.layoutManager=linearLayoutManager
postList=ArrayList()
postaAdapter=context?.let{postaAdapter(it,postlistas ArrayList)}
recyclerView.adapter=postAdapter
检索职位()
返回视图
}
私人娱乐检索帖子(){
val postRef=FirebaseDatabase.getInstance().reference.child(“Posts”)
postRef.addValueEventListener(对象:ValueEventListener{
覆盖数据更改(p0:DataSnapshot){
if(p0.exists()){
postList!!.clear()
用于(p0.children中的快照){
val post=snapshot.getValue(post::class.java)!!
(作为ArrayList的postList)。添加(post)
}
postAdapter?.notifyDataSetChanged()
}
}
已取消覆盖乐趣(p0:DatabaseError){
}
})
}}
后适应器

class PostAdapter(private val mContext: Context,private val mPost: List<Post>
):RecyclerView.Adapter<PostAdapter.ViewHolder>()
  {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
    val view = LayoutInflater.from(mContext).inflate(R.layout.post_layout, parent, false)
    return ViewHolder(view)
 }
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
    val post = mPost[position]
        Picasso.get().load(post.getPost()).into(holder.postImg)
    publisherInfo(holder.profileImg, holder.userName, post.getPublisher()) 
}
override fun getItemCount(): Int {return mPost.size}
inner class ViewHolder(@NonNull itemView: View): RecyclerView.ViewHolder(itemView)
{
    var profileImg:CircleImageView
    var postImg:ImageView
    var userName:TextView
    init {
        profileImg = itemView.findViewById(R.id.profile_image_post)
        postImg = itemView.findViewById(R.id.post_image)
        userName = itemView.findViewById(R.id.username_post)           
    }
}
private fun publisherInfo(profileImg: CircleImageView, userName: TextView, publisherID: String) {
    val userRef = FirebaseDatabase.getInstance().reference.child("Users").child(publisherID)
    userRef.addValueEventListener(object : ValueEventListener {
        override fun onDataChange(p0: DataSnapshot) {
            if (p0.exists()) {
                val user = p0.getValue<User>(User::class.java)
                Picasso.get().load(user!!.getImage()).into(profileImg)
                userName.text = user!!.getUsername()
            }
        }
        override fun onCancelled(p0: DatabaseError) {
        }
    })
}    
}
class PostAdapter(private val mContext:Context,private val mPost:List
):RecyclerView.Adapter()
{
override onCreateViewHolder(父级:ViewGroup,viewType:Int):ViewHolder{
val view=LayoutInflater.from(mContext).充气(R.layout.post_布局,父级,false)
返回视图保持器(视图)
}
覆盖BindViewHolder(holder:ViewHolder,位置:Int){
val post=mPost[位置]
毕加索.get().load(post.getPost()).into(holder.postImg)
publisherInfo(holder.profileImg、holder.userName、post.getPublisher())
}
重写fun getItemCount():Int{return mPost.size}
内部类ViewHolder(@NonNull itemView:View):RecyclerView.ViewHolder(itemView)
{
var profileImg:CircleImageView
var postImg:ImageView
var用户名:TextView
初始化{
profileImg=itemView.findviewbyd(R.id.profile\u image\u post)
postImg=itemView.findviewbyd(R.id.post\u图像)
userName=itemView.findviewbyd(R.id.userName\u post)
}
}
private fun publisherInfo(profileImg:CircleImageView,用户名:TextView,publisherID:String){
val userRef=FirebaseDatabase.getInstance().reference.child(“用户”).child(publisherID)
userRef.addValueEventListener(对象:ValueEventListener{
覆盖数据更改(p0:DataSnapshot){
if(p0.exists()){
val user=p0.getValue(user::class.java)
Picasso.get().load(user!!.getImage()).into(profileImg)
userName.text=user!!.getUsername()
}
}
已取消覆盖乐趣(p0:DatabaseError){
}
})
}    
}

< >我删除了一些代码,使代码简单的< /p>使用@ SnNeNoFS系统,在这种情况下您能帮助实现吗?只要按照该链接的指令,将<代码> PaxeSeS/<代码>设置为10。了解更多,如果您考虑在某个时间点尝试使用,则推荐通过组合查询光标来对查询进行分页。有限度方法。我也建议你看看这个更好的理解。使用@ SnNeNoFS系统,你能在这种情况下实现它吗?只要按照那个链接的指令,把代码> PuxeSeS/<代码>到10。了解更多,如果你考虑在某个时间点尝试使用,是一种推荐的方式,你可以在页面上分页。通过将查询游标与limit()方法相结合,我还建议您对此进行研究,以便更好地理解。