其他分享
首页 > 其他分享> > android – 无尽的滚动kotlin回收视图/ ListView

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