android viewholder静态,android – 静态ViewHolder并在使用RecyclerView时获取上下文

我正在尝试使用回收器视图并处理单击事件.我已经阅读了在回收站视图项上处理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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值