穿胖次的夏雨来 2018-12-23 22:26 采纳率: 16.7%
浏览 8129

RecyclerView中点击item跳转到其他Activity并显示item内容如何实现?

适配器代码

package com.example.uilayout.adapter;

import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.example.uilayout.R;
import com.example.uilayout.model.Msg;

import java.util.List;

/**
 * Created by 夏雨来 on 2018/11/20.
 */

public class MsgListAdapter extends RecyclerView.Adapter<MsgListAdapter.viewHolder> {
    private List<Msg> msgList;


    //1、创建构造函数
    //构造函数参数是list的集合,他是rv直接的数据来源
    //在做Adapter实例化的时候必须传入list的集合数据
    public MsgListAdapter(List<Msg> msgList) {
        this.msgList = msgList;
    }



    //2、创建类ViewHolder(视图容器),承载的是条目中的控件
    //做条目中控件的声明和绑定
    class viewHolder extends RecyclerView.ViewHolder{
        ImageView iv_head;
        TextView tv_friend;
        TextView tv_message;
        TextView tv_time;
        View itemView;
        public viewHolder(View itemView) {
            super(itemView);
            //itemView的值由一步一步传递过来的
            this.itemView=itemView;
            iv_head=itemView.findViewById(R.id.iv_head);
            tv_friend=itemView.findViewById(R.id.tv_friend);
            tv_message=itemView.findViewById(R.id.tv_message);
            tv_time=itemView.findViewById(R.id.tv_time);
        }
    }
    //创建ViewHolder对象
    //
    @Override

    public viewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
        View itemView = View.inflate(viewGroup.getContext(),R.layout.item_msglist,null);
        viewHolder holder=new viewHolder(itemView);
        return holder;
    }
    //给ViewHolder中的控件设置数据

    @Override
    public void onBindViewHolder(final viewHolder viewHolder, final int i) {
        final Msg msg = msgList.get(i);
        viewHolder.iv_head.setImageResource(msg.getImage_head());
        viewHolder.tv_friend.setText(msg.getFriend());
        viewHolder.tv_message.setText(msg.getMessage());
        viewHolder.tv_time.setText(msg.getTime());

            //设置条目中的点击监听
            viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Toast.makeText(view.getContext(), "你想与" + msg.getFriend() + "聊天", Toast.LENGTH_SHORT).show();
//                TextView friendView=view.findViewById(R.id.tv_friend);
//                Intent intent=new Intent();
//                Intent intent=new Intent(mContext,ChatActivity.class);
//                intent.putExtra("friend",msg.getFriend().toString());
//                mContext.startActivity(intent);


                }
            });
            //设置条目中具体控件的点击监听
//        viewHolder.iv_head.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View view) {
//                Toast.makeText(view.getContext(), "你点击了"+msg.getFriend()+"头像", Toast.LENGTH_SHORT).show();
//            }
//        });

        }

    @Override
    public int getItemCount() {
        return msgList.size();
    }
}

Activity代码

package com.example.uilayout.activity;

import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;

import com.example.uilayout.model.Msg;
import com.example.uilayout.adapter.MsgListAdapter;
import com.example.uilayout.R;
import com.example.uilayout.utils.MySQLiteOpenHelper;

import java.util.ArrayList;
import java.util.List;

public class MsgListActivity extends AppCompatActivity {
    RecyclerView rv;
    List<Msg> msgList = new ArrayList<>();
//    TextView friend;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_msglist);
        rv = findViewById(R.id.rv);
//        friend =findViewById(R.id.tv_friend);
        //给rv设置线性布局
        rv.setLayoutManager(new LinearLayoutManager(this));
        //初始化List集合数据
//        initList(msgList);
        initListFromDB();
        //给rv设置适配器
        rv.setAdapter(new MsgListAdapter(msgList));

//        MySQLiteOpenHelper helper=new MySQLiteOpenHelper(this,"wechat",null,1);
//        SQLiteDatabase db=helper.getWritableDatabase();



    }


    public void initListFromDB() {
        MySQLiteOpenHelper helper = new MySQLiteOpenHelper(this, "wechat", null, 1);
        SQLiteDatabase db = helper.getWritableDatabase();
        Cursor cursor = db.query("msg", null, null, null, null, null, null);
        while (cursor.moveToNext()) {
            int headImageSrc = cursor.getInt(cursor.getColumnIndex("headImageSrc"));
            String friend = cursor.getString(cursor.getColumnIndex("friend"));
            String message = cursor.getString(cursor.getColumnIndex("message"));
            String time = cursor.getString(cursor.getColumnIndex("time"));

            Msg msg = new Msg(headImageSrc, friend, message, time);
            msgList.add(msg);
        }
    }
}

布局文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="10dp"
    android:descendantFocusability="blocksDescendants"
    >
    <ImageView
        android:id="@+id/iv_head"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:src="@drawable/a"
        android:layout_marginTop="5dp"
        android:layout_marginLeft="10dp"
        android:onClick="click"
        />
    <TextView
        android:id="@+id/tv_friend"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="小张"
        android:textSize="20sp"
        android:textColor="#000"
        android:layout_toRightOf="@+id/iv_head"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="10dp"
        android:onClick="click"
        />
    <TextView
        android:id="@+id/tv_message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="你在干嘛"
        android:textSize="15sp"
        android:lines="1"
        android:layout_alignLeft="@+id/tv_friend"
        android:layout_marginTop="40dp"
        android:onClick="click"
        />
    <TextView
        android:id="@+id/tv_time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="21:00"
        android:textSize="15sp"
        android:layout_alignTop="@+id/tv_friend"
        android:layout_alignParentRight="true"
        android:layout_marginRight="10dp"
        android:onClick="click"
        />
    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="#C0C0C0"
        android:layout_alignLeft="@+id/iv_head"
        android:layout_alignRight="@+id/tv_time"
        android:layout_marginTop="74dp"
        />



</RelativeLayout>

未跳转时界面
未跳转时界面
效果,点击item跳转到另一个界面之后,界面显示与XX聊天,XX是由item中获取的
效果,点击item跳转到另一个界面之后,界面显示与XX聊天,XX是由item中获取的

  • 写回答

7条回答 默认 最新

  • 孤独的冥王星 2018-12-24 00:54
    关注

    adapter的构造方法加个参数Context,将activity带进来,至于如何跳转,你的onclick方法中注释掉的就是了

    评论

报告相同问题?

悬赏问题

  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)