問題カトンにソリューションを提供するために、複雑なネストされたリストとネストされたスライドのRecyclerViewマルチ項目分析

recyclerViewなテンセントアニメーションこのタイプのホームページ、アニメーションのリストとテンセントなど、より複雑な使用シナリオは、また、スライドカードDunganを持っています

4002920-ce44d91da144d1fc.png
持っています

のは、このリストを分析してみましょう、私たちは、層がrecyclerViewによって達成することができるレイアウトを使用して頭の上のカルーセルビューを最も外側

キーは、私はいくつかの黒丸に○をつけ、次の項目で、私たちは各項目が異なっていることがわかりますので、マルチアイテムのレイアウトを使用することです

しかし、我々はこのような、我々は、XMLレイアウト6 ImageViewのそれを書くことができ、各項目を詳しく見てみ?

4002920-50bb13fc4dfba5db.png
QQのスクリーンショット20190531131411.png

実際には、また、あまりにも多くの問題、書かれている場合、後者の割り当てが生活に、よりになりますあなたが思ってしまうので、XMLのこのアイテムは、我々はrecyclerViewを書くために使用する必要があります

そして、このXMLは、実際には、すべて私たちの究極の目標は、達成するためにrecyclerViewの多品目、recyclerViewのネストされたマルチアイテムを使用することであることを意味し、書き込みにrecyclViewを必要としています

その後、元の問題に戻ったので、ネスティング、プラススライディングプロセスは常に呼び出されているので、多重recyclerViewレイアウトは、カードが感じているインターフェース全体を上にスライドしますonBindViewHolder

ソリューション:

判決onBindViewHolderまた、外側recyclerViewタグの割り当てに項目のエントリの最初の時にすでに直接のリターンを持っている場合、タグは、次の操作を実行することなく、二度目に来ているということかどうかを決定しますインクルード

    //判断获取到的模块类别,showType
            val recyclerView = helper.getView<RecyclerView>(R.id.mRvItem)

            val tag = recyclerView.tag
            if ((tag is Int) && tag == helper.layoutPosition) {
                return
            } else {
                recyclerView.tag = helper.layoutPosition
            }

おすすめ

転載: blog.csdn.net/weixin_33766805/article/details/90998872