RecyclerViewの基礎知識

1848 ワード

RecyclerViewの前身はListViewですが、なぜListViewがあるのにRecyclerViewが必要なのでしょうか?ListViewは生まれつき大きな欠陥があるからです.
ListViewの欠陥
1.ListViewの拡張性が悪く、縦スクロールしか実現できず、横スクロールはサポートされていない.2.ListViewのクリックイベントsetOnItemClickListener()は、正確な位置を特定できません(例えば、ListViewのitemにボタンがもう1つあります).
RecyclerViewの基本的な使い方
  • supportライブラリ
  • を追加する必要がある
  • レイアウトでRecyclerView psを使用する:RecyclerViewはシステムSDKに内蔵されていないため、完全なパケットパス
  • を書く必要がある.
  • コードにRecyclerViewが見つかり、レイアウトマネージャ、アダプタ、
  • が設定されています.
    レイアウトマネージャRecyclerViewは3種類のレイアウトマネージャ1を提供する.LinearLayoutManager;2.GridLayoutManager;3.StaggeredGridLayoutManager.
    1.LinearLayoutManagerのデフォルトは縦に並べられており、表示されるitemは上から下までです.横に並べたい場合、左から右にitemを表示するには方向を設定する必要があります.
    LinearLayoutManager manager = new LinearLayoutManager(this);
    manager.setOrientation(LinearLayoutManager.HORIZONTAL);
    

    2.GridLayoutManagerはグリッドレイアウトで、自分でいくつかの列に分けることができます.3.StaggerdGridLayoutManagerは、滝の流れのレイアウトで、簡単に滝の流れの効果を実現できます.滝の流れの並び方(横、縦)と行数(列)を設定することもできます.アダプタアダプタには基本的なRecyclerViewが必要です.Adapter;3つの方法を実現しなければならない.1.onCreateViewHolder();2.onBindViewHolder();getItemCount().
    1.onCreateViewHolder()は、ViewHolderインスタンス(一般的には内部クラスであり、viewHolderはRecyclerView.ViewHolderを継承する)を作成し、このViewHolderインスタンスを返します.
    2.onBindViewHolder()は、RecyclerViewのサブアイテムデータに値を付け、各サブアイテムが画面内にスクロールされたときに実行されます.3.getItemCount()は、RecyclerViewのサブアイテムの数を教え、データ・ソースの長さを直接返します.
  • クリックイベントRecyclerViewはListViewと同じsetOnItemTouchListener()ではなく、すべてのクリックイベントを具体的なViewで登録する(対応するViewをViewHolderで取得してsetOnClickListener()ことができる)ことで、最初にListViewに言及したクリックの問題を解決します.次のコードでpostionを取得し、postionで関連操作を行うことができます.
  • int position = holder.getAdapterPosition();
    

    補足ListViewのレイアウト配列は独自に管理されているが、RecyclerViewはこの作業をLayoutManagerに任せ、LayoutManagerでは拡張可能なレイアウト配列インタフェースが制定されており、サブクラスはインタフェースの仕様に従って実現するだけで、さまざまな配列方式のレイアウトをカスタマイズすることができる.
    参考文章:郭霖『第一行コード』