У меня возникли проблемы с внедрением кликов с моим RecyclerView. Я хочу получить позицию, на которую была нажата карта, а затем загрузить соответствующий фрагмент.Щелчок CardView для загрузки фрагмента
Я посмотрел this post и потратил почти 30 минут, пытаясь понять код и реализовать его сам, но я сдался, когда понял, сколько ошибок было в фрагменте.
Вот мой класс адаптера.
public class RVAdapter extends RecyclerView.Adapter<RVAdapter.PersonViewHolder> {
public static CardView cv;
public static class PersonViewHolder extends RecyclerView.ViewHolder {
TextView chapterName;
TextView chapterNumber;
// ImageView chapterPhoto;
public PersonViewHolder(View itemView) {
super(itemView);
cv = (CardView) itemView.findViewById(R.id.cv);
chapterName = (TextView) itemView.findViewById(R.id.chapter_name);
chapterNumber = (TextView) itemView.findViewById(R.id.chapter_number);
// chapterPhoto = (ImageView) itemView.findViewById(R.id.person_photo);
}
}
List<Chapter> chapters;
RVAdapter(List<Chapter> chapters) {
this.chapters = chapters;
}
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
}
@Override
public PersonViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item, viewGroup, false);
PersonViewHolder pvh = new PersonViewHolder(v);
return pvh;
}
@Override
public void onBindViewHolder(PersonViewHolder personViewHolder, int i) {
personViewHolder.chapterName.setText(chapters.get(i).chapterName);
personViewHolder.chapterNumber.setText(chapters.get(i).chapterNumber);
// personViewHolder.chapterPhoto.setImageResource(persons.get(i).photoId);
}
@Override
public int getItemCount() {
return chapters.size();
}
}
Я просмотрел каждую реализацию на StackOverflow и либо у меня туннельное зрение или ни один из них на самом деле работает. Я знаю, что на стороне есть много сообщений, но я потратил больше времени на поиск ответа, прежде чем задавать этот вопрос, поэтому все эти ссылки фиолетовые для меня.
Вся помощь приветствуется, и я был бы более чем счастлив опубликовать любой другой код, который может помочь!
Вы ввели мне код, и кажется, что это то, что я пытаюсь выяснить, но мне нужно объяснение того, как загрузить соответствующее действие в зависимости от положения карты. Я думаю, что это имеет какое-то отношение к Intent, но я не уверен. – wasimsandhu
Причина, по которой мне нужно объяснение, заключается в том, что код не работает без дополнения Intent и с ним, я получаю эту ошибку: 'java.lang.NullPointerException: попытка вызвать виртуальный метод 'java.lang.String android.content.Context.getPackageName() 'в ссылке нулевого объекта, в com.wsandhu.studyapwh.RVAdapter $ 1.onItemClick (RVAdapter.java:74), at com.wsandhu.studyapwh.RVAdapter $ PersonViewHolder.onClick (RVAdapter .java: 52) ' – wasimsandhu
в onBindViewHolder вы получаете позиции как: i, это значение хранится внутри пользователя в виде: ЧЕЛОВЕК, в onItemClick вы получаете PERSONId, хранящийся внутри ViewHolder как: id, и это было исходное положение которую вы нажали. я предполагаю, что вы используете одно действие, которое будет отображать только один конкретный элемент? вот почему я поместил id/position этого элемента в качестве дополнительного в намерение этой операции, поэтому в вашей деятельности вы можете прочитать это дополнительно, и теперь какой элемент показывать, –