2016-08-18 6 views
0

RecyclerViewの2つの要素の間に除算器を追加する必要がありますが、2つの要素の間には1つのみの間に除算器を追加する必要があります。Android RecyclerView 2つの要素の間のデバイダ

よろしくお願いいたします。 私は要素の2つのグループを持っており、それらの間にある種のカスタムディバイダを作る必要があります。 enter image description here

これをどのようにして最適化することができますか? 私はItemLayoutを変更してスプリッタを追加することを考えましたが、このオプションが十分に速くないとは思いません。

+0

こんにちは、アダプターは既に2種類のアイテム(赤と青の画像)を扱っていますか? –

+0

まあ、はい、いいえ、私はマルチタイプのレイアウトを使用しますが、この方法ではありません。 たとえば、AppleとPearの2つのレイアウトがあり、赤のものは新鮮なリンゴと梨、青のものは食べられた果物です。 –

答えて

0

青と赤のアイテムに異なるitemviewtypeを使用している可能性があります。あなたのデバイダに別のitemviewtypeを作成し、ダミーオブジェクトをデータリストに追加し、instanceofという現在の位置にそのようなオブジェクトがある場合はRecyclerView.Adapter.onCreateViewHolderをチェックすることをお勧めします。次に、希望の仕切りレイアウトのビューホールダーを返します。

ビュータイプに関するチュートリアルは、How to create RecyclerView with multiple view type?にあります。

0

私は、単体スプリッタのレイアウトの追加タイプを使用するのが良い選択だと思います。 あなたはパフォーマンスについて警告した場合、その後、私はそれを任意のパフォーマンスの問題がありませんでしょう、あなたを落ち着かます:

  • あなたには、いくつかの静的なテキストや簡単な描画可能(例えば灰色の線)とのシンプルなレイアウトを持つことになります。このようなレイアウトの作成には数ミリ秒かそれ以上の時間がかかり、バインディングに時間がかかりません。
  • リサイクラビューは、アイテムの種類ごとに独自のキャッシュを持っていますので、 )作成され、将来のバインディングのためにキャッシュされます
  • ライブラリを見て、ListViewにセクションを提供すると、このアプローチも同様に使用されることがわかります(つまり、デフォルトのタイプのアイテムと、タイプアイテムまたはセクションタイプアイテム)

もちろん、ItemDecorationを使用できますが、あなた自身ですべてを処理する必要があります。あなたは子供の位置を決定し、スプリッタを描く必要があるかどうかを決定する必要があります。そしてそれはもっと苦痛だと私は思います。

関連する問題