Android Studio 对有recycleView的页面进行点击跳转设计
背景:
本次设计基于已经对安卓UI界面进行了基本设计,使用RecycleView进行了列表设计且加入了点击效果,如下图所示:
目的:
对item进行详情界面的设计,点击item之后不仅会出现“作品为:。。。。。”,也会进入一个新的内容界面。
内容:
1、Activity_2文件设计:该文件用于跳转界面的数据接收
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
import java.util.List;
public class MainActivity2 extends AppCompatActivity {
private TextView name;
private TextView information;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
Intent intent=getIntent();
name=(TextView) findViewById(R.id.textView6);
information=(TextView) findViewById(R.id.textView7);
name.setText(intent.getStringExtra("name"));
information.setText(intent.getStringExtra("information"));
}
}
该文件中使用使用Intent导向Activity_2传递数据,主要是下图这一部分起到的作用。
2、详情界面的设计:top_2.xml 、activity_main2.xml
a、top_2.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/textview_top2"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:layout_weight="1"
android:background="#8F4C4C"
android:gravity="center"
android:text="演员简介"
android:textColor="@color/white"
android:textSize="34sp" />
</LinearLayout>
这一xml文件主要用于设计详情界面的顶部
b、activity_main2.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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity2">
<include
layout="@layout/top_2"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/textView6"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.2"
android:gravity="center"
android:text="information"
android:textSize="20sp" />
<View
android:layout_width="match_parent"
android:layout_height="2dp"
android:background="#8F4C4C" />
<TextView
android:id="@+id/textView7"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="4"
android:gravity="center"
android:text="moreinformation"
android:textSize="20sp" />
</LinearLayout>
这一文件主要将详情界面的内容以及top_2文件汇总。
3、fragment文件设计:由于我设计的详情界面内容仍旧使用的是recycleView中列表的内容,所以并未对其进行更改,若是需要填加新的内容,则只需要通过数组或者集合编辑内容,通过intent传递数据即可添加到详情界面中。具体传递数据可对如下链接内容进行学习。
https://www.jianshu.com/p/1169dba99261
4、Adapter文件
Adapter(适配器)作为数据和列表之间的桥梁和纽带,可以在这一文件中对数据进行传递。
package com.example.myapplication;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
private Context mContext;
private List<String> mlist;
private List<String> nlist;
private List<String> klist;
public MyAdapter(List<String> mlist,List<String> nlist,List<String> klist,Context context){
this.mContext=context;
this.mlist=mlist;
this.nlist=nlist;
this.klist=klist;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view= LayoutInflater.from(this.mContext).inflate(R.layout.item,parent,false);
return new MyViewHolder((view));
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
holder.num.setText(position + 1 + "");
holder.content.setText(mlist.get(position));
String name1=mlist.get(position);
String content1=nlist.get(position);
holder.itemView.setContentDescription(content1);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(mContext,MainActivity2.class);
Toast.makeText(mContext, "作品为:"+content1, Toast.LENGTH_SHORT).show();
//将要传递的值附加到Intent对象中暂时保存
intent.putExtra("name",name1);
intent.putExtra("information",content1);
mContext.startActivity(intent);
}
});
}
@Override
public int getItemCount() {
return mlist.size();
}
class MyViewHolder extends RecyclerView.ViewHolder {
TextView num,content,name;
public MyViewHolder(View itemView) {
super(itemView);
num=itemView.findViewById(R.id.num);
content=itemView.findViewById(R.id.content);
}
}
}
具体点击之后出现的界面可由以下函数进行设计:
在完成所有步骤之后,可运行安卓项目进行测试:
会出现如下效果:
最终代码放在代码仓库中:
跳转界面设计