위의 질문에 대한 답변을 찾으려고했지만 게시물이 도움이되지 않습니다. getLayoutPosition()
를 사용하여 클릭 된 내가보기의 위치를 찾기 위해 OnClickListener를이리스트 <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;
}
그리고 ViewHolder :
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));
}
}
의 I는 내가 데이터베이스에서 목록과 같은 데이터를 얻을 RecyclerView 어댑터가 목적은 의도를 사용하여 Activity를 채우는 onClick() 메소드의 RecyclerViewAdapter에서 모든 노트가있는 noteList가 필요하다는 것입니다. 이 문제를 어떻게 해결해야합니까?
당신이 (당신이 것처럼 보이는) 어댑터를 백업 데이터 구조로 인덱스 위치를 사용하는 경우 getLayoutPosition() 대신에'getAdapterPosition()'을 사용해야한다. 레이아웃 위치와 어댑터 위치는 일반적으로 동기화되지만, 어댑터의 항목이 이동/변경되고 recyclerview가 업데이트를 아직 그리지 못한 경우 레이아웃 위치가 다른 값을보고 할 수 있습니다. –
@BenP. 그 점을 알아 주셔서 고마워요. – waseefakhtar