【Android】RecyclerViewがよくわからなかったので、まとめました。(java)
※初心者が書いた記事なので、間違っている可能性が高いです。
1. RecyclerViewの使い方について
2. RecyclerViewを使うときに、いじらないといけないメソッド・クラスについて
1. RecyclerViewの使い方について
リスト状の表示したいときに使うもの。同じレイアウトのリストを何回も使い回すことができる。Youtubeの動画の検索結果みたいな表示を作りたいときに便利だと思われる。
似たものに、ListViewというものがあるんですが、RecyclerViewの方が使い勝手が良いとか...。
2. RecyclerViewを使うときに、いじらないといけないメソッド・クラスについて
Androidのドキュメントを見ると、いっぱいクラスとか、メソッドが乗っているが、基本的に必要なものは、
1. RecyclerView.Manager
2. RecyclerView.Adapter
3. RecyclerView.ViewHolder(1つのリストの設計図的なもの)
です。
以下、それぞれの説明
1. RecyclerView.LayoutManager
RecyclerViewの全体の表示を決めるクラス。MainActivityで呼び出したあとは特に何もしなくても問題はない。
recyclerView.setLayoutManager(new LinearLayoutManager(this));
上のコードのように、recyclerViewにLayoutManagerを紐付けるだけでok。
2. RecyclerView.Adapter
データとRecyclerViewをつなげる役割。
3.のRecyclerView.ViewHolder(リスト内のレイアウトとデータをつなげるクラス)を作ったり、RecyclerView.ViewHolderにデータを渡す役割を持っている。
overrideするメソッド
・onCreateViewHolder
・onBindViewHolder
・getItemCount
・onCreateViewHolderについて。
ViewHolderが作られたときに、実行されるメソッド。戻り値にViewHolderインスタンスを設定する必要がる。
(例)
@NonNull
@Override
public RecyclerViewAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_row, parent, false);
return new ViewHolder(view, context);
}
・onBindViewHolderについて
表示内容の更新をするメソッド。
onCreateで設定したレイアウトに、データを渡していく。
public void onBindViewHolder(@NonNull RecyclerViewAdapter.ViewHolder holder, int position) {
// Data は データが入ったインスタンスです。
Data data = dataItems.get(position);
holder.テキストヴューオブジェクト.setText(data.getName());
}
・getItemCount
表示したいリストの数を帰るか戻り値に設定する。(ここが0とかだと、何も表示されません)
@Override
public int getItemCount() {
return dataItems.size();
}
3. RecyclerView.ViewHolder(1つのリストの設計図的なもの)
onCreateViewHolderで作っているリスト(例ではlist_row.xmlを元にしたもの)のlayoutに、テキストをセットしたりする。
要は、リスト内のViewオブジェクトにfindViewByIdとか、onClickListenerとかを設定するところ