Есть список имен, по которому нажимаю. После чего должен сохраняться нажатый элемент, который я использую в другом фрагменте.
Список загружается, но при кликах на имена выбивает следующую ошибку:
java.lang.NullPointerException: Attempt to invoke interface method 'void com.vm.sai.adapters.PersonAdapter$OnRecItemClickListener.onRecItemClick(int)' on a null object reference
at com.vm.sai.adapters.PersonAdapter$PersonViewHolder.onClick(PersonAdapter.java:57)
Код адаптера:
public class PersonAdapter extends RecyclerView.Adapter<PersonAdapter.PersonViewHolder> {
List<String> perscategories;
OnRecItemClickListener onRecItemClickListener;
public PersonAdapter(List<String> perscategories, OnRecItemClickListener onRecItemClickListener) {
this.onRecItemClickListener = onRecItemClickListener;
this.perscategories = perscategories;
}
public interface OnRecItemClickListener {
void onRecItemClick(int position);
}
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
}
public static class PersonViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private TextView personName;
private int position;
private OnRecItemClickListener onRecItemClickListener;
PersonViewHolder(View itemView, OnRecItemClickListener onRecItemClickListener) {
super(itemView);
personName = (TextView) itemView.findViewById(R.id.persname);
personName.setOnClickListener(this);
}
public void bind(String text, int position) {
this.position = position;
personName.setText(text);
}
@Override
public void onClick(View v) {
onRecItemClickListener.onRecItemClick(position);
}
}
@Override
public PersonViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.person_list_item, viewGroup, false);
return new PersonViewHolder(v, onRecItemClickListener);
}
@Override
public void onBindViewHolder(PersonViewHolder personViewHolder, final int position) {
personViewHolder.bind(perscategories.get(position), position);
}
@Override
public int getItemCount() {
return perscategories.size();
}
}
Фрагмент в котором создаю экземпляр класса:
private void initializeAdapter() {
PersonAdapter personAdapter = new PersonAdapter(personCategories, new PersonAdapter.OnRecItemClickListener() {
@Override
public void onRecItemClick(int position) {
saveFavorites(position);
}
});
recyclerView.setAdapter(personAdapter);
}
onRecItemClickListener = ...– Jan 03 '17 at 17:37