请根据第一次作业的源码基础,在列表页上点击跳转到另一详情页面;
一、设计页面
1.修改作业1中的item.xml,使其成为类微信消息界面
2.编写对应的适配器Myadapter,配置消息界面里recyclerView的内容展示和点击跳转功能
package com.example.myapplication;
import android.annotation.SuppressLint;
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.LinearLayout;
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.Myholder> {
Context context1;
//List<String> list1;
List<Map<String,Object>> data1;
public Myadapter(Context context,List<Map<String,Object>> data) {
context1=context;
data1=data;
}
@NonNull
@Override
public Myholder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view=LayoutInflater.from(context1).inflate(R.layout.item,parent,false);
Myholder myholder=new Myholder(view);
return myholder;
}
@Override
public void onBindViewHolder(@NonNull Myholder holder,
@SuppressLint("RecyclerView") int position) {
holder.avatar.setImageResource((int)(data1.get(position).get("头像")));
holder.name.setText(data1.get(position).get("联系人").toString());
holder.content.setText(data1.get(position).get("消息").toString());
holder.tipView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(context1,MessageDetailActivity.class);
intent.putExtra("消息内容",data1.get(position).get("消息内容").toString());
context1.startActivity(intent);
}
});
}
@Override
public int getItemCount() {
return data1.size();
}
public class Myholder extends RecyclerView.ViewHolder{
LinearLayout tipView;
TextView name;
TextView content;
ImageView avatar;
public Myholder(@NonNull View itemView){
super(itemView);
tipView=itemView.findViewById(R.id.M_layout);
name=itemView.findViewById(R.id.textViewM1);
content=itemView.findViewById(R.id.textViewM2);
avatar=itemView.findViewById(R.id.imageViewM);
}
}
}
3.在消息界面对应的java文件(即作业1中的fragment1)中写入并管理我们所要展示的消息内容
package com.example.myapplication;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class fragment1 extends Fragment{
private View view;
private Myadapter myadapter;
private RecyclerView recyclerView;
private List<String> list1;
List <Map<String,Object>> data;
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.tab1, container, false);
recyclerView = view.findViewById(R.id.recycleview);
data=new ArrayList<Map<String,Object>>();
String[] names={"爸爸","妈妈","哥哥","姐姐","弟弟","妹妹"};
String[] message={"这是爸爸的消息","这是妈妈的消息","这是哥哥的消息",
"这是姐姐的消息","这是弟弟的消息","这是妹妹的消息"};
String[] M_detail={"爸爸的消息内容","妈妈的消息内容","哥哥的消息内容",
"姐姐的消息内容","弟弟的消息内容","妹妹的消息内容"};
int[] image={R.drawable.picturef,R.drawable.picturem,R.drawable.pictureb,
R.drawable.pictures,R.drawable.pictureyb,R.drawable.pictureys};
/*list1 = new ArrayList<>();
for (int i = 0; i < 9; i++) {
list1.add("这是第" + i + "条消息");
}*/
for(int i=0;i<names.length;i++){
Map<String,Object> map=new HashMap<String,Object>();
map.put("联系人",names[i]);
map.put("消息",message[i]);
map.put("头像",image[i]);
map.put("消息内容",M_detail[i]);
data.add(map);
}
myadapter = new Myadapter(view.getContext(), data);
LinearLayoutManager manager = new LinearLayoutManager(view.getContext());
manager.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(manager);
recyclerView.setAdapter(myadapter);
return view;
}
}
二、新建activity实现item的点击跳转
1、新建activity用来展现跳转后的内容2.设计其对应的activity_message_detail.xml文件,实现我们想要的页面布局
3.实现页面跳转和参数传递
为了方便,我只创建了一个activity,但要实现点击不同item跳转到对应的内容,我们可以通过intent来传递和接收对应的参数。
(1)在Myadapter中写一个startActivity()函数,实现点击item跳转到其详细内容页面
public void onBindViewHolder(@NonNull Myholder holder,
@SuppressLint("RecyclerView") int position) {
holder.avatar.setImageResource((int)(data1.get(position).get("头像")));
holder.name.setText(data1.get(position).get("联系人").toString());
holder.content.setText(data1.get(position).get("消息").toString());
holder.tipView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(context1,MessageDetailActivity.class);
intent.putExtra("消息内容",data1.get(position).get("消息内容").toString());
context1.startActivity(intent);
}
});
}
(2)在Myadapter里面使用函数putExtra()向MessageDetailActivity传递参数,在MessageDetailActivity里使用getStringExtra()来接收intent传来的内容
Myadapter.java:
holder.tipView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(context1,MessageDetailActivity.class);
intent.putExtra("消息内容",data1.get(position).get("消息内容").toString());
context1.startActivity(intent);
}
});
}
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
三、效果展示
四、源代码地址