移动开发第二次作业之实现recyclerView的点击

一、作业目标

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

二、实现思路

1.为recyclerView的每一项列表增加点击功能

2.创建一个Activity,来完成跳转

三、实现过程

1.首先在Myadapter类中添加一个接口,并在onBindViewHolder方法中为每个 RecyclerView 项设置点击监听器:

Context context1;
    List <String>list1;
    OnItemClickListener clickListener;
    public Myadapter(Context context, List list){
        context1=context;
        list1=list;
    }
    @NonNull
    @Override
    public Myholder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view =LayoutInflater.from(context1).inflate(R.layout.item,parent,false);
        Myholder myholder=new Myholder(view);
        return myholder;
    }

    @Override
    public void onBindViewHolder(@NonNull Myholder holder, @SuppressLint("RecyclerView") int position) {
        holder.textView.setText(list1.get(position));
        holder.textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                    clickListener.onItemClick(position);
                }
        });
    }

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

    public void setOnItemClickListener(OnItemClickListener listener) {
        this.clickListener = listener;
    }
    protected class Myholder extends RecyclerView.ViewHolder {
        TextView textView;
        public Myholder(@NonNull View itemView) {
            super(itemView);
            textView=itemView.findViewById(R.id.textView10);
        }
    }

    public interface OnItemClickListener {
        void onItemClick(int position);
    }

public void onBindViewHolder(@NonNull Myholder holder, @SuppressLint("RecyclerView") int position) { ... }:在这个方法中,绑定数据到 ViewHolder,设置项的内容。在这里,还设置了项的点击事件监听器。

holder.textView.setOnClickListener(new View.OnClickListener() { ... }:为每个项的 textView(假设是显示文本的 View)设置点击监听器。当该项被点击时,触发监听器的 onItemClick 方法。

clickListener.onItemClick(position);:在点击事件中调用点击监听器的 onItemClick 方法,将点击的项的位置传递给监听器。

public interface OnItemClickListener { ... }:定义了一个接口,用于处理点击事件。该接口包含了一个 onItemClick 方法,用于在点击事件发生时执行相应的操作。

2.在Fragment2中为RecyclerView设置点击事件监听器,并跳转到Activity4:

myadapter.setOnItemClickListener(new Myadapter.OnItemClickListener() {
            @Override
            public void onItemClick(int position) {
               Context context1=getActivity();
               Intent intent=new Intent(context1, Activity4.class);
               int i=position;
               intent.putExtra("i",i);
               startActivity(intent);
            }
        });

new Myadapter.OnItemClickListener() { ... } 创建了一个匿名内部类,实现了 OnItemClickListener 接口的 onItemClick 方法。这个方法会在 RecyclerView 中的项被点击时调用。

3.完成跳转页面:

  Activity4.java:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_4);
        Log.d("pjf","4:onCreate...");
        button = findViewById(R.id.button9);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                finish();
            }
        });
        int i=getIntent().getIntExtra("i",0);
        Intent intent=new Intent(Activity4.this,MyService1.class);
        intent.putExtra("i",i);
        textView1=findViewById(R.id.textView9);
        textView2=findViewById(R.id.textView11);
        textView3=findViewById(R.id.textView13);
        String str="歌曲"+(i+1);
        textView3.setText(str);
        textView1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                 startService(intent);
            }
        });
        textView2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                stopService(intent);
            }
        });
    }
}

Activity4实现对后续歌曲的播放和暂停

activity_4.xml:

4.启动项目完成跳转:

点击歌曲1:

点击返回:

点击歌曲2:

成功完成跳转

四、总结

实现跳转的过程中并没有什么问题,只花了一会就完成了,主要问题出现在思考点击不同列表怎么切换到不同的歌曲时,不知道该怎么切换,最终想到了先由Fragment2向Activity4传值,再传向MyServise1,来控制MyServise1播放不同的歌曲,并且传送的值就是position,最终实现了歌曲的切换。

五、gitte仓库链接

https://gitee.com/pjf_1/code-warehouse

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值