Редактировать Кажется, что мой @Override для onMentorClick (наставник наставника) никогда не доступен.
У меня есть вид переработчика, который показывает список людей. Мне нужно иметь возможность нажать на одного из людей в списке и открыть новое действие.
в моем адаптере у меня есть следующий код:
private OnMentorClickListener listener;
public interface OnMentorClickListener {
void onMentorClick(Mentor mentor);
}
public void setOnMentorClickListener(OnMentorClickListener listener){
this.listener = listener;
}
в моей деятельности, у меня есть следующий код:
mentorAdapter.setOnMentorClickListener(new MentorAdapter.OnMentorClickListener(){
@Override
public void onMentorClick(Mentor mentor) {
Intent intent = new Intent(MentorActivity.this, MentorAddEditActivity.class);
intent.putExtra(MentorAddEditActivity.EXTRA_MENTOR_ID, mentor.getMentor_id());
intent.putExtra(MentorAddEditActivity.EXTRA_MENTOR_NAME, mentor.getMentor_name());
intent.putExtra(MentorAddEditActivity.EXTRA_MENTOR_PHONE, mentor.getMentor_phone());
intent.putExtra(MentorAddEditActivity.EXTRA_MENTOR_EMAIL, mentor.getMentor_email());
startActivityForResult(intent, EDIT_MENTOR_REQUEST);
}
});
Я реализовал слушатели для других части моего приложения точно так же, и все они работают. Я искал свой код, и эта настройка, кажется, идентична другим разделам кода.
Я не получаю ошибок, но когда я нахожусь на своей странице "Менторы" и перечисляю всех наставников, ничего не происходит, когда я нажимаю на одну из них. Нет ошибок, нет сбоев, нет ничего.
Я также пытался просто внедрить пролив OnMentorClickListener в класс Activity, как показано ниже:
public class MentorActivity extends AppCompatActivity implements MentorAdapter.OnMentorClickListener
и переопределить вне OnCreate:
@Override
public void onMentorClick(Mentor mentor) {
Intent intent = new Intent(MentorActivity.this, MentorAddEditActivity.class);
intent.putExtra(MentorAddEditActivity.EXTRA_MENTOR_ID, mentor.getMentor_id());
intent.putExtra(MentorAddEditActivity.EXTRA_MENTOR_NAME, mentor.getMentor_name());
intent.putExtra(MentorAddEditActivity.EXTRA_MENTOR_PHONE, mentor.getMentor_phone());
intent.putExtra(MentorAddEditActivity.EXTRA_MENTOR_EMAIL, mentor.getMentor_email());
startActivityForResult(intent, EDIT_MENTOR_REQUEST);
}
This тоже не работает.
Есть какие-нибудь мысли о том, что я не могу щелкнуть наставника в RecyclerView?
Весь MentorAdapter для разъяснения. Это максимально идентично всем другим моим адаптерам с измененными именами переменных для Mentor.
public class MentorAdapter extends RecyclerView.Adapter<MentorAdapter.MentorHolder> {
private static final String TAG = AppRepository.class.getSimpleName();
private OnMentorClickListener listener;
private List<Mentor> mentorList = new ArrayList<>();
class MentorHolder extends RecyclerView.ViewHolder{
private TextView textViewMentorName;
private TextView textViewMentorPhone;
private TextView textViewMentorEmail;
MentorHolder(@NonNull View itemView) {
super(itemView);
textViewMentorName = itemView.findViewById(R.id.textView_mentor_name);
textViewMentorPhone = itemView.findViewById(R.id.textView_mentor_phone);
textViewMentorEmail = itemView.findViewById(R.id.textView_mentor_email);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = getAdapterPosition();
if(listener!=null&&position!=RecyclerView.NO_POSITION){
listener.onMentorClick(mentorList.get(position));
}
}
});
}
}
@NonNull
@Override
public MentorHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.mentor_item, parent, false);
return new MentorHolder(itemView);
}
@Override
public void onBindViewHolder(@NonNull MentorHolder holder, int position) {
Mentor currentMentor = mentorList.get(position);
holder.textViewMentorName.setText(currentMentor.getMentor_name());
holder.textViewMentorEmail.setText(currentMentor.getMentor_email());
holder.textViewMentorPhone.setText(currentMentor.getMentor_phone());
}
@Override
public int getItemCount() {
return mentorList.size();
}
public void setMentorList(List<Mentor> mentors){
this.mentorList = mentors;
notifyDataSetChanged();
}
public Mentor getMentorAt(int position){return mentorList.get(position);}
public interface OnMentorClickListener {
void onMentorClick(Mentor mentor);
}
public void setOnMentorClickListener(OnMentorClickListener listener){
this.listener = listener;
}
}