怎么在RecyclerView的适配器Adapter实现点击跳转事件(关键找到context上下文)

这个下问题还是在项目中遇到的,查了好多资料才明白,废话不多说,先看一下效果图(一个RecyclerView列表,点击列表中的条目,弹出图提示框,并跳转到另外一个Activity)


https://weibo.com/tv/v/H9YPaiFtz?fid=1034:4323787475205327 

上面链接就是效果。点击是在Adapter里面实现的,刚开始我也是和大家一样不明白为什么写了下面的代码就报错,一直不能正确跳转

  Intent intent=new Intent(this,AnotherActivity.class);
  startActivity(intent);

后来才发现,Adapter是一个java类并不是一个Activity,普通的java类并不能正确获得上下文环境,因为这个类没有在AndroidManifest文件里面注册。所以在进行条状的时候只要需要手动获取上下文环境就可以了,代码如下:

public class TextViewAdapter extends RecyclerView.Adapter<TextViewAdapter.ViewHolder> {

    public List<String> mList=null;
    public TextViewAdapter(List<String> mList){
        this.mList=mList;
    }

    static class ViewHolder extends RecyclerView.ViewHolder{

        private TextView textView;
        public ViewHolder(View itemView) {
            super(itemView);
            textView=itemView.findViewById(R.id.text_item);
        }
    }
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view=LayoutInflater.from(parent.getContext()).inflate(R.layout.text_item,parent,false);
        ViewHolder holder=new ViewHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(final ViewHolder holder, int position) {
        String str=mList.get(position);
        holder.textView.setText(str);

        holder.textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //点击条目弹出提示框
                Toast.makeText(v.getContext(),
                        "你点击的字母是:"+holder.textView.getText(),Toast.LENGTH_LONG).show();
                //点击条目进行跳转到另外一个Activity
                Intent intent=new Intent(v.getContext(),AnotherActivity.class);
                v.getContext().startActivity(intent);
            }
        });
    }

    @Override
    public int getItemCount() {
        return mList.size();
    }
}

以上就是我自己定义的Adapter里面的代码,跳转的部分注释的很详细了,自己能看懂。至于为什么使用v.getContext()能够获取到上下文环境大家自己查资料,这里不进行讲解。

已经明白的可以留言讲讲你的想法。 

 

 

  • 27
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值