OnClickListener在回收器视图中不起作用-(与该应用中的其他成功展示方式相同)

问题描述 投票:0回答:2

我有一个回收站视图,其中显示了人员列表。我需要能够单击列表中的人员之一,并打开一个新活动。

在我的适配器中,我有以下代码:

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中单击指导者?

java android onclicklistener
2个回答
0
投票

在某些地方,您需要调用这些回调,如下所示:

profileView.setOnClickListener(new ....
     listener.onMentorListener(mentor);
)

您的适配器中有此实现吗?


0
投票

如果要覆盖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 ;
}
© www.soinside.com 2019 - 2024. All rights reserved.