android – 无尽的滚动kotlin回收视图/ ListView
作者:互联网
我正在拼命尝试使用kotlin在Android应用程序上实现无休止的滚动.所有教程都没用,因为他们没有正确解释事情.例如:
https://github.com/chetdeva/recyclerview-bindings
它看起来很有希望,但作者使用的短语
“把它放在你的BindingAdapter中”所以我看看这个BindingAdapter是什么,我发现了一个java文件但是如果你在那里插入任何东西我会得到错误.就像我尝试的任何东西都直接失败.
其他教程是用java编写的,即使使用“translate to kotlin”选项也没用,因为翻译后的代码会抛出100个错误.
我尝试过这样的事情:
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()
}
或这个
val inflater = LayoutInflater.from(this@MainActivity)
val layout = inflater.inflate(R.layout.append_list, null, false)
button.setOnClickListener{screen.addView(layout)}
有没有防弹方法,你可以简单地追加像html和js的元素?我在2分钟内写了这个片段.在Android / Kotlin中有类似的“简单”方式吗?
$("#next").click(function(){
$(".append_text").append("new text <img src='http://static.webshopapp.com/shops/015426/files/005031634/560x625x2/kek-amsterdam-wandtattoo-hase-forest-friends-braun.jpg'/>")
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="next">Load</button>
<span class="append_text"> </span>
一般来说,我在选择错误的布局时会遇到很多错误.我尝试了Listview和contrainlayout并回收布局和垂直滚动布局等.有一个简单的body标签,你可以简单地附加一个xml文件?
我想我一直走错路,因为我通过网络的眼睛看到了一切.开发.虽然android没有经典的DOM.任何人都可以通过一个最小的例子向我解释如何在按钮点击/滚动时将xml文件附加到主xml文件?
解决方法:
我使用这种方法为Kotlin中的recyclerview添加无限滚动功能:
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)
}
变量lastVisibleItemPosition声明如下:
private val lastVisibleItemPosition:Int
get()= linearLayoutManager.findLastVisibleItemPosition()
private lateinit var scrollListener: RecyclerView.OnScrollListener
每次您需要将此功能添加到recyclerView时,只需调用setRecyclerViewScrollListener()方法即可.
希望能帮助到你,
莱昂纳多
标签:android,android-recyclerview,kotlin,infinite-scroll 来源: https://codeday.me/bug/20190527/1162651.html