adapter.class和display.class什么是Context?

时间:2015-12-14 02:47:30

标签: android onitemclicklistener

将我的列表适配器更改为recycleview适配器之后,事实证明lestin对OnItem的点击从未如此困难:/我尝试了每一种方法,但都没有用,因为我对Context一无所知。就像在适配器类中单击时启动一个新活动一样:

new intent(context, Single.class)

 new intent(getActivity(), Single.class)

new intent(getContext(), Single.class)

new intent(getApplicationContext(), Single.class)

new intent(getActivity().getApplicationContext(), Single.class)


new intent(activity.this, Single.class)

new intent(this, Single.class)

new intent(activity.class, Single.class)

以上所有代码均无法解决, 我想我应该创造一种叫做语境的东西? 请帮我解决这个问题。

3 个答案:

答案 0 :(得分:1)

将上下文参数传递给适配器的构造函数,并将其保存为以下成员:

public MyAdapter(Context context){
    this.mContext = context;
}

并在您的点击监听器上,调用

new intent(this.mContext, Single.class)

当您在活动中创建适配器时,如下所示:

MyAdapter adapter = new MyAdapter(this);

答案 1 :(得分:1)

如果您想进一步了解每种类型的上下文之间的差异,我建议您this reading

您需要做的是创建一个将通过适配器构造函数传递的回调类。在onBindViewHolder方法中,为您需要的任何View创建点击监听器,并在onClick方法中,只需拨打回叫。

public class MyAdapter extends ...

    private MyCallback mCallback;

    public MyAdapter(..., MyCallback callback) {
        mCallback = callback;
        ...
    }


    @Override
    public void onBindViewHolder(UniversityItemViewHolder holder, int position) {
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mCallback.onItemClicked(v, position);
            }
        });

    ...

答案 2 :(得分:0)

上下文是Android中的内置类,外观here,而ActivityApplicationContext是它的子类。因此,您可以使用activity.this或{{1} }应用需要getApplicationContext参数的方法。

相关问题