在recyclerView中为特定视图创建OnclickListener

时间:2017-12-03 21:57:40

标签: android android-recyclerview adapter

我是堆栈溢出的初学者,这是我的第一个问题,我无法解决这个问题。所以,如果我对这个网站了解不多,那么在此之前请原谅。

问题是:

我想从活动中点击一个recyclerView适配器项目的特定视图,而不是从自己的适配器点击,有点像从适配器点击实施到调用此适配器的活动。

感谢阅读这篇不明确的文字:)

1 个答案:

答案 0 :(得分:2)

如果我理解正确,您可以使用界面获得目标。 您的适配器应包含Click事件的侦听器实例。

public class MyAdapter extends RecyclerView.Adapter {

    OnAdapterClickListener onAdapterClickListener;

    public MyAdapter(OnAdapterClickListener onAdapterClickListener) {
        this.onAdapterClickListener = onAdapterClickListener;
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(onAdapterClickListener != null) {
                    onAdapterClickListener.onViewClicked(view);
                }
            }
        });
    }
}

接口应该是这样的:

public interface OnAdapterClickListener {

    void onViewClicked(View view);
}

最后你的活动必须实现界面:

public class MainActivity implements OnAdapterClickListener {

    private MyAdapter myAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        myAdapter = new MyAdapter(this);
    }

    @Override
    public void onViewClicked(View view) {

    }
}

现在,您可以在Activity中实现OnClickListener。