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分で書きました。 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、リサイクルレイアウト、垂直スクロールレイアウトなどを試しました。単純にxmlファイルを追加できる単純なbodyタグはありますか?
Webの目を通してすべてを見るので、私はいつも間違った方法をとっていると思います。開発。一方、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()
メソッドを呼び出すだけです。
それが役に立てば幸い、
レオナルド