我有一个回收站视图,其中显示了人员列表。我需要能够单击列表中的人员之一,并打开一个新活动。
在我的适配器中,我有以下代码:
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);
}
这也不起作用。
关于我的想法,我实际上无法在RecyclerView中单击指导者?
在某些地方,您需要调用这些回调,如下所示:
profileView.setOnClickListener(new ....
listener.onMentorListener(mentor);
)
您的适配器中有此实现吗?
如果要覆盖onMentorClick
,则您的活动应实现OnMentorClickListener
接口,然后在适配器上,您应使用以下命令将活动设置为侦听器:
mentorAdapter.setOnMentorClickListener(this)
在您的代码中,您使用的是新的点击侦听器(不是活动)
mentorAdapter.setOnMentorClickListener(new MentorAdapter.OnMentorClickListener(){
@Override
public void onMentorClick(Mentor mentor) {
}
});
此外,您应该在适配器实现中的用户单击上触发onMentorClick
,最好是在onCreateViewHolder
方法中:
public YourAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
ViewHolder holder = ViewHolder(
LayoutInflater.from(context).inflate(
R.layout.your_layout,
parent,
false
))
holder.itemView.setOnClickListener {
listener.onMentorClick(mentor)
}
return holder ;
}