I am developing an Instagram clone in Kotlin and I want to get photos from Firebase as the user scrolls. For example, if I have scrolled through up to 5 photos, I want to fetch 5 more photos from the database, and continue this process until there are no more photos left. I am attaching the code I am trying to write.How can I achieve this?
private lateinit var binding: ActivityFeedBinding
private lateinit var auth:FirebaseAuth
private lateinit var db:FirebaseFirestore
private lateinit var feedAdapter: FeedRecyclerAdapter
private lateinit var postArrayList:ArrayList<Post>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityFeedBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
auth= Firebase.auth
db=Firebase.firestore
postArrayList=ArrayList<Post>()
getData()
binding.recyclerView.layoutManager=LinearLayoutManager(this)
feedAdapter= FeedRecyclerAdapter(postArrayList)
binding.recyclerView.adapter=feedAdapter
}
private fun getData()
{
db.collection("Posts").orderBy("date", Query.Direction.DESCENDING).limit(5).addSnapshotListener { value, error ->
if(error!=null)
{
Toast.makeText(this,error.localizedMessage,Toast.LENGTH_LONG).show()
}
else
{
if(value!=null)
{
if(!value.isEmpty)
{
val documents= value.documents //liste tutuyor
postArrayList.clear()
for(document in documents)
{
val comment=document.get("comment") as String
val userEmail=document.get("userEmail")as String
val downloadUrl=document.get("downloadUrl")as String
val post= Post(userEmail,comment,downloadUrl)
postArrayList.add(post)
}
feedAdapter.notifyDataSetChanged()
}
}
}
}
}
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
val menuInflater=menuInflater
menuInflater.inflate(R.menu.menu,menu)
return super.onCreateOptionsMenu(menu)
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
if(item.itemId== R.id.add_post)
{
val intent=Intent(this, UploadActivity::class.java)
startActivity(intent)
}
else if(item.itemId== R.id.signout)
{
auth.signOut()
val intent=Intent(this, MainActivity::class.java)
startActivity(intent)
finish()
}
return super.onOptionsItemSelected(item)
}
New contributor