目录
一、功能需求
1、依托作业一,将recyclerView的每个item增加点击功能,点击后跳转到一个新的view展示信息。实现点击联系人跳转到聊天界面。
二、功能实现
1、在适配器(Adapter)中为RecyclerView的每个item设置点击事件监听。
代码如下:
@Override public void onBindViewHolder(@NonNull MyViewHolder holder, @SuppressLint("RecyclerView") int position) { Glide.with(context) .load(data.get(position).get("key1").toString()) .into(holder.imageView1); holder.textView5.setText(data.get(position).get("key2").toString()); holder.textView6.setText(data.get(position).get("key3").toString()); holder.textView7.setText(data.get(position).get("key4").toString()); holder.detail_text.setText(data.get(position).get("key4").toString()); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 处理项的点击事件,跳转到新的页面 // 示例代码: Map<String, Object> itemData = data.get(position); String imgUrl = (String) itemData.get("key1"); String name = (String) itemData.get("key2"); String time = (String) itemData.get("key3"); String msg = (String) itemData.get("key4"); // 创建Intent并传递数据 Intent intent = new Intent(context, DetailActivity.class); intent.putExtra("imgUrl", imgUrl); intent.putExtra("name", name); intent.putExtra("time", time); intent.putExtra("msg", msg); // 启动新的Activity context.startActivity(intent); } }); //holder.Clicked.setOnClickListener(onClickListener); }
2、创建新的View展示信息的Activity(比如DetailActivity),在该Activity中获取传递过来的数据,并将这些数据显示在对应的视图组件上。
代码如下:
package com.example.myapplication; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.widget.ImageView; import android.widget.TextView; import com.bumptech.glide.Glide; public class DetailActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_detail); // 获取传递过来的数据 Intent intent = getIntent(); String imgUrl = intent.getStringExtra("imgUrl"); String name = intent.getStringExtra("name"); String timeString = intent.getStringExtra("time"); String msg = intent.getStringExtra("msg"); // 找到对应的视图组件 ImageView photo = findViewById(R.id.detail_img); TextView cctName = findViewById(R.id.textView6); TextView time = findViewById(R.id.detail_time); TextView cctMsg = findViewById(R.id.detail_content); // 在相应的视图组件中显示数据 Glide.with(this).load(imgUrl).into(photo); cctName.setText(name); time.setText(timeString); cctMsg.setText(msg); } }
三、效果展示
移动鼠标实现上下滑动
点击头像,实现点击联系人跳转到聊天界面。
四、总结
通过本次在Android RecyclerView中添加Item点击事件,点击后跳转到一个新的view展示信息的实现,我更加的了解了RecyclerView,在这个实验过程中,我学到了两种 在Android RecyclerView中添加Item点击事件的方法,第一种是直接在Adapter中的onCreateViewHolder方法中实现点击事件,第二种是自定义接口,在activity或者fragment中调用。自定义一个接口OnItemClickListener,在自定义的ViewHolder中实现onClickListenr接口,先声明一个自定义接口的变量,在自定义的ViewHolder的构造函数中添加一个参数,自定义的这个接口,并设置itemview的点击事件,在点击事件中转移到自定义的接口上,传到外面的调用者。在自定义的Adapter中定义一个方法public void setOnItemClickListener(OnItemClickListener listener) {this.mClickListener = listener;}并暴露给外面的调用者。然后在MainActivity中使用。
五、源码
详细代码已上传至github:BKINGING/我的微信 (github.com)