【发布时间】:2016-01-21 07:33:27
【问题描述】:
我正在尝试使用回收站视图并处理点击事件。我已经阅读了在回收站视图项上处理 onClick 事件的各种方法,例如:
- 在视图持有者类本身内定义点击监听器。
- 在 onCreateViewHolder() 中定义点击监听器。
- 定义一个接口,然后从那里开始(似乎工作量太大)。
所以我的第一个问题是哪个选项更好? 我目前使用的是第一种方法,如果在视图持有者类本身中定义点击侦听器是可行的方法,那么我如何使用来自适配器的上下文,因为视图持有者类是静态的。
基本上,我想要一个静态视图持有者,并在点击事件时打开一个我需要上下文的新活动。
更新:添加适配器和 ViewHolder 代码。
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private Context mContext;
private List<Job> jobs;
public MyAdapter(Context context, List<Job> 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);
}
}
}
【问题讨论】:
-
你的第一个问题,哪种方法更好,会产生主要基于意见的答案,不适合 SO 格式。
-
是的,但我想知道在比较前两种方法时是否有任何性能差异。
标签: android onclick android-recyclerview