ルームデータベース.Refererviewパート2
導入
すぐれた言葉
アダプタ
2 ) OnBindView (): RefererViewこのメソッドを呼び出して、ViewHolderとデータを関連付ける.このメソッドは適切なデータを取得し、ビューホルダーのレイアウトを埋めるデータを使用します.このメソッドは、データをViewHowoldオブジェクトにバインドするために使用します.
3 ) getItemCount () : ResererViewこのメソッドを呼び出してデータセットのサイズを取得します.
public class WordListAdapter extends ListAdapter<Word,WordViewHolder> {
public WordListAdapter(DiffUtil.ItemCallback<Word> diffCallback) {
super(diffCallback);
}
@Override
public WordViewHolder onCreateViewHolder( ViewGroup parent, int viewType) {
return WordViewHolder.create(parent);
}
@Override
public void onBindViewHolder( WordViewHolder holder, int position) {
Word current = getItem(position);
holder.bind(current.getWord());
}
public static class WordDiff extends DiffUtil.ItemCallback<Word> {
@Override
public boolean areItemsTheSame(Word oldItem,Word newItem){
return oldItem == newItem;
}
@Override
public boolean areContentsTheSame(Word oldItem,Word newItem){
return oldItem.getWord().equals(newItem.getWord());
}
}
}
ListAdapterとは
ListAdapter
. アダプターのこの特別な種類は、リストを更新するのに役立ちます.用途Eugene W. Myer's
Diffingアルゴリズムは何を更新するかを決定する.それは非常に効率的です.getItemCount ()はどこですか?
ListAdapter<Word,WordViewHolder>
それから、私たちは少しジェネリックを再利用する必要がありますbounded type parameters
. ジェネリック
ジェネリッククラスの作成
class name<T1,T2,T3....>{
//Typical member fields
}
<>
はdiamond
そして、それは型を保持するために使用されます.資本においてT
はクラスの宣言中に型パラメーターを表現するために使用されます.ListAdapter<T, VH extends RecyclerView.ViewHolder>
T
は宣言中に型を表現するために使用されますが、heckはVH extends RecyclerView.ViewHolder
? 我々が最初に学ぶ必要があることを理解するためによくbounded type parameters
. 有界型パラメータ
bounded type parameters
できるようにしなさい.upper bounds
. 上限はどのように我々が許容されるクラスのタイプを決定するかです.有界型パラメータは次のようになります<U extends Number>
upper bounds
ListAdapter<T, VH extends RecyclerView.ViewHolder>
ListAdapter<Word,WordViewHolder>
WordViewHolder
ListAdapterが使用する制限された型パラメーターによって受け入れられます.パブリック静的クラスworddiff拡張子utilを拡張します.ItemCallback
DiffUtil
. Diffutilは2つのリストの違いを計算し、最初のリストを2番目のリストに変換する更新演算子のリストを出力するユーティリティクラスです.Eugene W. Myer's
別の1つのリストに変換する更新プログラムの最小数を計算するためのアルゴリズムを拡散.何がdiffutilです.iTemkCall ?
2 ) arecontentsameame (): 2つのオブジェクトが同じ項目を表すかどうかを確認するために呼び出されます.
RefererViewの実装
setContentView()
メソッド.RecyclerView recyclerView = findViewById(R.id.recyclerview);
final WordListAdapter adapter = new WordListAdapter(new WordListAdapter.WordDiff());
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
RefererViewのリサイクルビュー
新しいwordlistAdapter =新しいwordlistAdapter (新しいwordlistadapter . worddiff () )
WordListAdapter.WordDiff()
. リサイクルsetAdapter (アダプター);
setAdapter(adapter)
どのように、我々はReaderViewの我々のインスタンスにアダプターを設定しますか.リサイクルsetLayoutManager (新しいリニアレイアウトマネージャ(これ));
this
は、リニアレイアウトマネージャが必要とするコンテキストとして使用されます.活動に取り組むときthis
アクティビティコンテキストを表します.線形レイアウトマネージャは、我々のデータを線形ファッションで表示します.アプリケーションの起動
結論
Reference
この問題について(ルームデータベース.Refererviewパート2), 我々は、より多くの情報をここで見つけました https://dev.to/theplebdev/room-database-recyclerview-part-2-21fnテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol