Android Studio-实现RecycleView的点击跳转

一、设计目标

二、功能说明

        在聊天页面中,点击某一消息列时,会跳转到其详情页。聊天列表包含联系人的头像与姓名,消息详情页包含联系人的头像姓名以及聊天信息

三、效果展示

        

        

四、技术说明

  • Intent

  • Intent是一个将要执行的动作的抽象的描述,一般作为参数来使用,由 Intent来协助完成 Android各个组件之间的通讯。例如调用startActivity()来启动一个Activity,使用构造方法:Intent intent = new Intent(this, SecondActivity.class);startActivity(intent);

五、设计流程

  • 聊天列表 item.xml

        

  • 消息详情页

  • activity_talk.xml

        

具体代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/imageView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:src="@drawable/girl1" />

        <TextView
            android:id="@+id/name"
            android:layout_width="279dp"
            android:layout_height="match_parent"
            android:gravity="center"
            android:text="TextView"
            android:textColor="@color/blue"
            android:textSize="35dp" />
    </LinearLayout>

    <TextView
        android:id="@+id/info"
        android:layout_width="match_parent"
        android:layout_height="523dp"
        android:gravity="center"
        android:text="TextView"
        android:textSize="50dp" />

</LinearLayout>
  • Activity_talk.java

  • 设置点击跳转后显示的详情页面,通过Intent获取到的数据设置item控件的值。
public class Activity_talk extends AppCompatActivity {
    TextView textView1,textView2;
    ImageView imageView1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_talk);
        textView1 = findViewById(R.id.name);
        textView2 = findViewById(R.id.info);
        imageView1 = findViewById(R.id.imageView);

        //获取Fragment1传过来的intent
        Intent intent=getIntent();

        //根据intent获取得到的数据设置item控件的值
        imageView1.setImageResource(intent.getIntExtra("image",R.drawable.girl1));
        textView1.setText(intent.getStringExtra("friend"));
        textView2.setText(intent.getStringExtra("message"));


    }
}
  • 聊天页面 Fragment1.java

  • 在聊天页面Fragment1设置聊天列表RecycleView的具体内容,包括联系人姓名、聊天消息、联系人头像。
public class Fragment1 extends Fragment {
    RecyclerView recyclerView;
    Myadapter myadapter;
    View view1;
    Context context;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        view1=new View(getContext());

        view1= inflater.inflate(R.layout.fragment1, container, false);
        recyclerView= view1.findViewById(R.id.recyclerview);

        //聊天页面展示
        //friends:联系人  info:消息  images:联系人头像
        String[] friends = {"叶苏","白榆","胡杨","林竹","江叙","陈冀","楚安","许然","邱望","白景"};
        String[] info = { "你好。","再见。","谢谢。","早上好。","今天天气真好。",
                "你吃饭了吗?","明天见。","是真的吗?","原来如此。","你说得对。",};
        int[] images={R.drawable.girl1,R.drawable.girl2,R.drawable.man1,R.drawable.girl3,R.drawable.man2,
                R.drawable.man3,R.drawable.man4,R.drawable.girl4,R.drawable.girl5,R.drawable.man5};

        //将friend、info、images聚合为一个集合
        List<Map<String,Object>> talk2=new ArrayList<Map<String,Object>>();
        for(int i=0;i<friends.length;i++) {
            Map<String,Object> it=new HashMap<String,Object>();
            it.put("friend",friends[i]);
            it.put("message",info[i]);
            it.put("image",images[i]);
            talk2.add(it);
        }

        context=getContext();
        myadapter=new Myadapter(talk2,context);
        recyclerView.setAdapter(myadapter);
        LinearLayoutManager manager=new LinearLayoutManager(view1.getContext());
        manager.setOrientation(RecyclerView.VERTICAL);
        recyclerView.setLayoutManager(manager);

        return view1;
    }
}
  • Myadapter.java

  • 在onBindViewHolder中增加消息页详情,并通过Intent实现页面跳转。
 public void onBindViewHolder(@NonNull Myholder holder, int position) {
        //holder.textView1.setText(talk1.get(position).get("friend").toString());
        String name=talk1.get(position).get("friend").toString();
        String info=talk1.get(position).get("message").toString();
        int image=Integer.parseInt(talk1.get(position).get("image").toString());
        //获取聊天页面中某个消息详情
        holder.textView1.setText(name);
        holder.imageView1.setImageResource(image);
        //添加点击事件
        holder.textView1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //点击后跳转到消息详情页
                Intent intent=new Intent(context1,Activity_talk.class);
                //向intent传值
                intent.putExtra("friend",name);
                intent.putExtra("message",info);
                intent.putExtra("image",image);

                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                //跳转
                context1.startActivity(intent);
            }
        });
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值