gpt4 book ai didi

android - 无尽的滚动 kotlin 回收 View /ListView

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:34:06 27 4
gpt4 key购买 nike

我正在拼命尝试使用 kotlin 在 Android 应用程序上实现无限滚动。所有的教程都没有用,因为它们没有正确解释事情。例如: https://github.com/chetdeva/recyclerview-bindings

它看起来很有前途,但作者使用了像这样的短语“把它放在你的 BindingAdapter 中”所以我看看这个 BindingAdapter 是什么,我找到了一个 java 文件,但如果你在其中插入任何东西,我就会出错。就像我尝试的任何事情都直接失败一样。

其他教程是用 java 编写的,即使有“翻译成 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 分钟内写了这个 fragment 。 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 - 无尽的滚动 kotlin 回收 View /ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48384805/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com