将我的列表适配器更改为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)
以上所有代码均无法解决, 我想我应该创造一种叫做语境的东西? 请帮我解决这个问题。
答案 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,而Activity
和ApplicationContext
是它的子类。因此,您可以使用activity.this
或{{1} }应用需要getApplicationContext
参数的方法。