实验目的:
(1)对有recycleView的页面进行点击跳转设计。比如,某一tab页是新闻列表,则点击某一行能跳转到新闻详情页面; (2)本次作业考查的基础原理是对activity的生命周期的理解以及状态转变操作;
一、实现功能
在实验二中我们已经实现了在类微信界面添加recyclview并添加相应的imageview,本次实验就是在recyclview中添加一个button控件并实现监听,使鼠标点击时可以跳转到另外一个设计好的界面,具体操作如下。
二、设计跳转页面
本次实验主要想实现手机购买页面,所以设置一个手机购买的页面,页面添加一个textview和一个imageview(以其中一个.xml页面举例) 代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/textView9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="MIX4"
android:textColor="@color/purple_500"
android:textSize="20dp" />
<ImageView
android:id="@+id/imageView6"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:srcCompat="@drawable/mix4zs" />
</LinearLayout>
效果:
三、显示商品列表
我选择在首页显示跳转列表,于是我们在weixinFragment页面编写逻辑代码
代码:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment_weixin, container, false);
context=this.getActivity();
recyclerView=view.findViewById(R.id.recyclerview);
LinearLayoutManager layoutManager=new LinearLayoutManager(context);
String[] label={"型号:小米MIX4","型号:苹果13 pro Max","型号:三星Z Flip3"};
String[] price={"价格:4799起","价格:9799起","价格:7999起"};
String[] color={"颜色:陶瓷黑","颜色:远峰蓝","颜色:陨石海岸"};
String[] config={"内存:128G","内存:128G","内存:128G"};
Object[] simple={huawei.class,pingguo.class,xiaomi.class};
int[] phone={R.drawable.xiaomi4,R.drawable.pingguotu,R.drawable.sx};
List<Map<String,Object>> data=new ArrayList<Map<String,Object>>();
for(int i=0;i< label.length;i++) {
Map<String, Object> listitem = new HashMap<String, Object>();
listitem.put("detail",simple[i]);
listitem.put("name", label[i]);
listitem.put("color", color[i]);
listitem.put("price", price[i]);
listitem.put("configure", config[i]);
listitem.put("tutu", phone[i]);
data.add(listitem);
}
myadapter=new Myadapter(data,context);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setAdapter(myadapter);
return view;
}
显示效果:
五、实现跳转操作
首先在MyViewHolder声明一个button控件,并进行绑定
Button button2;
button2=(Button) itemView.findViewById(R.id.button2);
然后在onBindViewHolder添加button2的描述
public void onBindViewHolder(@NonNull MyViewHolder holder, @SuppressLint("RecyclerView") int position) {
holder.button2.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick (View view){
Intent main2 = new Intent(context,(Class<?>)data.get(position).get("detail"));
Toast.makeText(context.getApplicationContext(),"正在努力跳转 :)",Toast.LENGTH_SHORT).show();
context.startActivity(main2);
}
});
和之前的textview和imageview有所不同,他的接受position写在onClick中,因为有3个position,它要找到正确的位置进行跳转。
六、完善JAVA文件
跳转不可能直接到xml文件,它同样需要java文件来承载它,并返回相应的信息,我们新建了三个java文件,huawei,pingguo和xiaomi。此处我同样以huawei为例
package com.example.mywork_lbw;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;
public class huawei extends AppCompatActivity {
public huawei() { }
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.huawei);
Log.i("life ", "huawei is on create...");
Intent intent = getIntent();
}
}
在setContentView中我们设置了这个java文件将显示哪一个xml文件,此处当然显示的huawei.xml。
最后就是要把上面的串联起来,在微信总布局中加入button,点击实现跳转,总界面如图:
七、gitee仓库
gitee
|