对带有recycleView的页面进行点击跳转
一、recycleView页面设计
1.建立消息列表
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="60sp"
android:layout_gravity="center"
android:layout_weight="1">
<ImageView
android:id="@+id/image2"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
tools:srcCompat="@drawable/user" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="20"
android:orientation="vertical">
<TextView
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="TextView"
android:textSize="25sp" />
<TextView
android:id="@+id/message"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="TextView"
android:textSize="15sp" />
</LinearLayout>
</LinearLayout>
2.配置适配器Myadapter
package com.example.myapplication1;
import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
import java.util.Map;
public class MyAdapter extends RecyclerView.Adapter <MyAdapter.MyViewHolder>{
private View itemView;
private Context context;
private List<Map<String,Object>> items;
public MyAdapter(List<Map<String,Object>> items, Context context) {
this.context=context;
this.items=items;
}
@NonNull
@Override
//viewHolder视图指针
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
itemView= LayoutInflater.from(context).inflate(R.layout.item,parent,false);
MyViewHolder myViewHolder=new MyViewHolder(itemView);
return myViewHolder;
}
@Override
//把data和textview一一对应
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
holder.textView.setText(items.get(position).get("USER").toString());
holder.imageView.setImageResource(Integer.parseInt(items.get(position).get("png").toString()));
}
@Override
public int getItemCount() {
return items.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder{
TextView textView;
ImageView imageView;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
textView=itemView.findViewById(R.id.text);
imageView=itemView.findViewById(R.id.image);
}
}
}
package com.example.myapplication1;
import android.content.Context;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
import java.util.Map;
public class MyAdapter2 extends RecyclerView.Adapter<MyAdapter2.MyViewHolder2> {
private View itemView2;
private Context context;
private List<Map<String,Object>> items2;
private OnItemClickListener mOnItemClickListener = null;
public MyAdapter2(List<Map<String,Object>> items2, Context context) {
this.context=context;
this.items2=items2;
}
@NonNull
@Override
//viewHolder视图指针
public MyViewHolder2 onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
itemView2= LayoutInflater.from(context).inflate(R.layout.item2,parent,false);
MyViewHolder2 myViewHolder2=new MyAdapter2.MyViewHolder2(itemView2);
//将创建的View注册点击事件
itemView2.setOnClickListener(this::onClick);
return myViewHolder2;
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder2 holder, int position) {
holder.itemView.setBackgroundColor(Color.WHITE);
holder.name.setText(items2.get(position).get("USER").toString());
holder.message.setText(items2.get(position).get("MESSAGE").toString());
holder.imageView.setImageResource(Integer.parseInt(items2.get(position).get("png").toString()));
//将position保存在itemView的Tag中,以便点击时进行获取
holder.itemView.setTag(position);
}
@Override
public int getItemCount() {
return items2.size();
}
public List<Map<String,Object>> getDataList() {
return items2;
}
public class MyViewHolder2 extends RecyclerView.ViewHolder {
TextView name;
TextView message;
ImageView imageView;
public MyViewHolder2(View itemView2) {
super(itemView2);
name = itemView2.findViewById(R.id.name);
message = itemView2.findViewById(R.id.message);
imageView = itemView2.findViewById(R.id.image2);
}
}
//define interface
public static interface OnItemClickListener {
void onItemClick(View view , int position);
}
public void setOnItemClickListener(OnItemClickListener listener) {
this.mOnItemClickListener = listener;
}
public void onClick(View v) {
if (mOnItemClickListener != null) {
//注意这里使用getTag方法获取position
mOnItemClickListener.onItemClick(v,(int)v.getTag());
}
}
}
3.写入要展示的内容
二、实现跳转
创建两个activity
package com.example.myapplication1;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.widget.TextView;
public class MainActivity2 extends AppCompatActivity {
private TextView textView21;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
supportRequestWindowFeature(Window.FEATURE_NO_TITLE); //取消默认title
setContentView(R.layout.activity_main2);
Intent intent=getIntent();
textView21=findViewById(R.id.textView21);
textView21.setText(intent.getStringExtra("num"));
Log.d("life","activity2 is onCreate...");
}
@Override
protected void onStart() {
super.onStart();
Log.d("life", "activity2 is onStart...");
}
@Override
protected void onRestart() {
super.onRestart();
Log.d("life", "activity2 is onRestart...");
}
@Override
protected void onPostResume() {
super.onPostResume();
Log.d("life", "activity2 is onPostResume...");
}
@Override
protected void onPause() {
super.onPause();
Log.d("life", "activity2 is onPuse...");
}
@Override
protected void onStop() {
super.onStop();
Log.d("life", "activity2 is onStop...");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d("life", "activity2 is onDestroy...");
}
}
具体代码见于gitee代码 仓库