我正在尝试使用回收器视图并处理单击事件.我已经阅读了在回收站视图项上处理onClick事件的各种方法,例如:
>在视图持有者类本身内定义单击侦听器.
>在onCreateViewHolder()中定义单击侦听器.
>定义一个界面,然后从那里开始(似乎工作太多).
所以我的第一个问题是哪个选项更好?
我目前正在使用第一种方法,如果在视图持有者类中定义单击侦听器本身就是方法,那么如何使用适配器中的上下文,因为视图持有者类是静态的.
基本上,我想拥有一个静态视图持有者,并且在click事件上,打开一个我需要上下文的新Activity.
更新:添加适配器和ViewHolder代码.
public class MyAdapter extends RecyclerView.Adapter {
private Context mContext;
private List jobs;
public MyAdapter(Context context, List jobs) {
mContext = context;
this.jobs = jobs;
}
@Override
public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View itemLayoutView = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.list_item, viewGroup, false);
itemLayoutView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(mContext, MyActivity.class);
mContext.startActivity(intent);
}
});
return new ViewHolder(itemLayoutView);
}
@Override
public void onBindViewHolder(WorkExperienceAdapter.ViewHolder viewHolder, int i) {
//bindViewHolder code
}
}
@Override
public int getItemCount() {
return jobs.size();
}
public static class ViewHolder extends RecyclerView.ViewHolder {
@InjectView(R.id.current)
TextView mCurrent;
public ViewHolder(View itemView) {
super(itemView);
ButterKnife.inject(this, itemView);
}
}
}
解决方法:
在视图持有者构造函数中,我们获得了View类的对象.您可以使用该对象来获取上下文:
class Holder extends RecyclerView.ViewHolder {
public Holder(View itemView) {
super(itemView);
Context context = itemView.getContext();
}
}
标签:android,android-recyclerview,onclick
来源: https://codeday.me/bug/20190727/1556267.html