I am desperately trying to implement endless scrolling on an android app using kotlin. All the tutorials are either useless since they dont explain things properly. So for example: https://github.com/chetdeva/recyclerview-bindings
it looks promising but the author uses phrases like
"put this in your BindingAdapter" so i look what this BindingAdapter
is, I found a java file but if you insert anything in there I get errors. Its like anything I try fails directly.
The other tutorials are written in java and even with "translate to kotlin" option its useless since the translated code throws 100 errors.
I tried things like :
setContentView(R.layout.activity_main)
list.layoutManager = LinearLayoutManager(this)
list.hasFixedSize()
list.adapter = ListAdapter(this, getLists())
val list_view: RecyclerView = findViewById(R.id.list)
fun setRecyclerViewScrollListener() {
list_view.addOnScrollListener(object : RecyclerView.OnScrollListener() {
override fun onScrolled(recyclerView: RecyclerView?, dx: Int, dy: Int) {
val height = list_view.getHeight()
val diff = height-dy
if (diff < 1000){
/*load next list */
}
}
})
}
setRecyclerViewScrollListener()
}
or this
val inflater = LayoutInflater.from(this@MainActivity)
val layout = inflater.inflate(R.layout.append_list, null, false)
button.setOnClickListener{screen.addView(layout)}
Is there a bullet proof method where you can simply append elemets like with html and js? I wrote this snippet in 2 min. Is there a similar "easy" way in Android/Kotlin?
In general I recive a lot of errors for choosing the wrong Layout. I tried Listview and contrainlayout and recycling Layout and Vertical Scrolling layout and so on. Is there a simple body tag where you can simply append a xml file?
I think I go the wrong way the whole time because I see everything though the eyes of a Web. Dev. while android does not have the classical DOM. Can anybody explain it to me with an minimal example on how to append a xml file to the main xml file on button click/on scroll?
I use this method for adding endless scroll functionality to a recyclerview in Kotlin:
private fun setRecyclerViewScrollListener() {
scrollListener = object : RecyclerView.OnScrollListener() {
override fun onScrollStateChanged(recyclerView: RecyclerView?, newState: Int) {
super.onScrollStateChanged(recyclerView, newState)
val totalItemCount = recyclerView!!.layoutManager.itemCount
if (totalItemCount == lastVisibleItemPosition + 1) {
Log.d("MyTAG", "Load new list")
recycler.removeOnScrollListener(scrollListener)
}
}
}
recycler.addOnScrollListener(scrollListener)
}
the variable lastVisibleItemPosition is declared as follows:
private val lastVisibleItemPosition: Int
get() = linearLayoutManager.findLastVisibleItemPosition()
private lateinit var scrollListener: RecyclerView.OnScrollListener
Just call the setRecyclerViewScrollListener()
method every time you nedd to add this functionality to the recyclerView.
Hope it helps,
Leonardo