私は上記の質問に対する回答を見つけようとしていますが、投稿は役に立たないようです。 リスト<E>をRecyclerViewアダプタからRecyclerViewホルダーに渡すには?
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.RecyclerViewHolder> {
public List<Note> noteList;
private View.OnLongClickListener longClickListener;
private Context context;
public RecyclerViewAdapter(List<Note> noteList, View.OnLongClickListener longClickListener, Context context) {
this.noteList = noteList;
this.longClickListener = longClickListener;
this.context = context;
}
そして、私は、ビューの位置を見つけるために、onClickListenerを持っているViewHolderは
getLayoutPosition()
を使ってクリックした:私は、データベースからリストなどのデータを取得する場所私はRecyclerViewアダプタを持っている
static class RecyclerViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private TextView noteTitleText;
private TextView noteDescriptionText;
private TextView dateText;
private TextView weekText;
RecyclerViewHolder(View view) {
super(view);
noteTitleText = (TextView) view.findViewById(R.id.noteTitleText);
noteDescriptionText = (TextView) view.findViewById(R.id.noteDescriptionText);
dateText = (TextView) view.findViewById(R.id.dateText);
weekText = (TextView) view.findViewById(R.id.weekText);
view.setOnClickListener(this);
}
@Override
public void onClick(View view) {
int position = getLayoutPosition();
// I want the noteList from the RecyclerViewAdapter here.
Note note = noteList.get(position);
Log.d("Item Clicked", String.valueOf(position));
}
}
インクリントを使用してアクティビティを生成するために、onClick()メソッド内のRecyclerViewAdapterのすべてのノートを持つnoteListが必要であることです。これについてどうすればいいですか?
:代わりにViewHolderにOnClickListener実装するので、私はとして、(onBindViewHolderにRecyclerViewAdapterで)メソッドを、それを実装しました'getLayoutPosition()'の代わりに 'getAdapterPosition()'を使うべきです。レイアウトの位置とアダプタの位置は通常同期されますが、アダプタ内のアイテムが移動/変更され、recyclerviewにまだ更新を描画する機会がない場合は、レイアウトの位置が異なる値をレポートできます。 –
@ BenP。それに気づいてくれてありがとう。 – waseefakhtar