RecyclerView点击功能

一、作业目标

        将recyclerView的每个item增加点击功能,点击后跳转到一个新的view展示信息。

二、技术说明

        要实现RecyclerView的每个item增加点击功能并跳转到一个新的View展示信息,可以使用Intent和startActivity来实现界面跳转。

第一步:在RecyclerView的Adapter中,为每个item设置点击事件监听器。

写法:在Adapter里面直接对控件设置点击事件监听器,当点击item时触发相应的操作。

第二步:创建跳转后的View

写法:在创建的Activity2中获取布局文件、intent,通过getStringExtra("key")获得string型变量或者getIntExtra("key")获得int型变量,放置获取的变量值。

第三步:传送数据

写法:使用intent用于不同组件之间传送数据,使用Bundle把要传的键值对打包起来一起传。

第四步:启动intent

intent启动2种:startActivity(intent);startActivityForResult(intent,int requestCode)

三、关键代码解析

1、在Adapter的onBindViewHolder()里面直接设置监听setOnClickListener(),实现对控件的点击功能。

    @Override
    public void onBindViewHolder(@NonNull Myholder holder, int position) {

        holder.textView.setText(list1.get(position));
        holder.textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //监听按钮,点击跳转
              
            }
        });
    }

2、 创建跳转到的页面Activity2

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //获取布局文件(下一个页面的布局文件)
        setContentView(R.layout.activity_2);

        textview=findViewById(R.id.Activity2);

        //getIntent()获得这个intent
        Intent intent=getIntent();
        //getStringExtra("key")获得string型变量,getIntExtra("key")获得int型变量,常量不用加""
        String str=intent.getStringExtra("name")+"-"+
                intent.getIntExtra("tel",1);
        String str2=intent.getExtras().getString("name")
                +":"+intent.getExtras().getInt("tel");
        textview.setText(str2);

        Log.d("xr","2:onCreate...");

    }

3、在onlick()里使用intent传输数据并启动intent

    @Override
    public void onBindViewHolder(@NonNull Myholder holder, int position) {

        holder.textView.setText(list1.get(position));
        holder.textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //监听按钮,点击跳转
                //intent用于不同组件之间传送数据,有很多构造方式,这只是其中一种
                Intent intent;
                intent = new Intent(context1,Activity2.class);
                //Activity1.this当前页面,Activity2.class要跳转的页面

                //把要传的键值对打包起来一起传
                Bundle bundle=new Bundle();
                //putBundle(),把bundle传值,把前面的包绑定传送
                bundle.putString("name","电话");
                bundle.putInt("tel",123456789);
                //putExtras(intent)可用于intent的嵌套:A->B,B->C=>A->C
                intent.putExtras(bundle);
                //intent启动2种:startActivity(intent);startActivityForResult(intent,int requestCode)
                context1.startActivity(intent);
            }
        });
    }

四、实验结果展示

五、小结

        RecyclerView的点击事件有两种写法:1、 在Adapter里面直接对控件做点击事件 2、写接口,在Activity或Fragment上实现接口中定义的方法。本次实验选择了较为简单的第一种,在已有recyclerView和adapter的情况下,对adapter增加了监听从而实现了目标,并且为了简化实验每次点击跳转的页面相同。

代码仓库:https://gitee.com/lizipearpear/application1.git

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值