RecyclerViewクラスとは?
状態:-
閲覧数:660
投稿日:2018-06-23
更新日:2018-09-09
ListViewをさらに進化させて柔軟にしたクラス
画面内に表示できるだけの子ViewをAdapterから受け取り、使わなくなったViewを再利用(リサイクル)することでスクロール時のパフォーマンスを向上させる
カスタマイズ性の高いListView
・従来のListViewよりレイアウトやアニメーションを自由にカスタマイズすることができる
注意点
・ヘッダー、フッターは存在しない
・区切り線を自身で実装する必要がある
レイアウトを決定するLayoutManagerが必要
RecyclerView.LayoutManager
・1つ分のデータのサイズなどを考慮して、レスポンシブにレイアウトを管理するクラス
・RecyclerView のレイアウトを決定
・ View の初期配置と、スクロール時の View の移動を担当
※ListViewには存在しない
使用例1
protected void onCreate(Bundle savedInstanceState) {
//中略
RecyclerView rv = (RecyclerView) findViewById(R.id.casarealRecyclerView);
//中略
LinearLayoutManager llm = new LinearLayoutManager(this);
//中略
rv.setLayoutManager(llm);
使用例2
protected void onCreate(Bundle savedInstanceState) {
//中略
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.cardList); //RecyclerViewオブジェクトを取得
//中略
// RecyclerViewにはレイアウトを決めるレイアウトマネージャー(LayoutManager)が必要なので、LinearLayoutManagerを生成している
LinearLayoutManager llManager = new LinearLayoutManager(this);
// 横スクロールになる
// llManager.setOrientation(LinearLayoutManager.HORIZONTAL); //スクロールする方向を決定。LinearLayoutManager.HORIZONTALなので横方向にスクロール
// 縦スクロール
llManager.setOrientation(LinearLayoutManager.VERTICAL); //スクロールする方向を決定。LinearLayoutManager.VERTICALなので縦方向にスクロール
recyclerView.setLayoutManager(llManager); //RecyclerViewにLinearLayoutManagerをセットする
RecyclerViewの基本
拡張性は無限大!Android の新コンポーネント RecyclerView の真価を探る
クラス構成
パッケージ
Android Support Library パッケージ
・android.support.v7.widget
親クラス
java.lang.Object
↳ android.view.View
↳ android.view.ViewGroup
↳ android.support.v7.widget.RecyclerView
↳ android.view.View
↳ android.view.ViewGroup
↳ android.support.v7.widget.RecyclerView
Known Direct Subclasses
・LinearLayoutManager
RecyclerView.Adapter抽象クラス
抽象メソッド
抽象クラスを継承したサブクラスでは、抽象メソッドを必ず実装しなければいけない
summary
getItemCount()メソッド
onBindViewHolder(VH holder, int position)メソッド
・Viewの内容を交換する(リサイクルだから)
・レイアウトマネージャーにより起動される
onCreateViewHolder(ViewGroup parent, int viewType)メソッド
・新しいViewを作成する
・レイアウトマネージャーにより起動される
RecyclerView.Adapter
抽象クラス