一、作业目标
将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增加了监听从而实现了目标,并且为了简化实验每次点击跳转的页面相同。