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中获取的

0

4个回答

RecyclerView中点击item跳转到其他Activity并显示item内容如何实现?
分开来讲:
1,RecyclerView中点击item,看代码你已经实现了。
2,跳转到其他Activity,看代码你也已经实现了。
3,跳转到其他Activity并显示item内容(数据处理)
// Intent intent=new Intent();
// Intent intent=new Intent(mContext,ChatActivity.class);
// intent.putExtra("friend",msg.getFriend().toString());
// mContext.startActivity(intent);
我看到有这样一段代码,这段代码的功能就是给intent put了一个key为"friend"的String,你的msg.getFriend()应该是个对象
(如果是个String就不用再toString()了),但是你这个msg.getFriend().toString(),所表现的意图应该是将这个对象传递进去,
但是你用toString()函数来作为String的具体内容,你传递过去后即便是可以接收到(通过getIntent().getExrea("friend",..)的方式),
也是很难解析的,所以你的问题应该就是这个数据的传递和解析的过程。
这里可以给你3个思路,
a.还是利用intent,只不过将msg.getFriend()这个对象获取到,然后将里面的值一个一个的通过intent.putExtra(...)的方式传递过去,
再在那边通过getIntent().getExrea(...)的方式获取再读取。
b.直接将msg.getFriend()对象序列化(两种方式可以自行百度),然后还是可以通过ntent.putExtra(...)的方式传递过去,在那边就可以
通过getIntent().getParcelableExtra();/getIntent().getSerializableExtra()两种方式之一获取(取决于你的序列化方式)。
c.通过Gson等Json数据处理框架将对象序列化转换为String后,以第a方式的String类型传递过去,再在那边使用Gson进行String转对象的
操作进行反序列化即可。
4,跳转到其他Activity并显示item内容(界面处理)
有了上一步的数据之后,显示就很简单了。
5,另外的方式:以单例或静态修饰或者持久化等方式,使两个Activity能共同访问的统一资源,也能够实现同样的效果,只不过一般来讲
还是上面的intent数据传递比较规范一些,具体原因就不解释了。

1

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

0

RecyclerView的条目点击事件,获取到当前点击条目的信息,然后跳转的时候带参数,到新界面读取就行了

0

你是如何实现不同的item来展示不同的好友,你的布局文件已经定义了指定text 而且没有循环你如何使item重复展示的?求大佬指点

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
RecyclerView学习笔记整理(3)解决item中关于跳转到另一个Activity的问题和判断多个item进行跳转到另一个Activity
首先我们需要解决一个问题 RecyclerView中的item如何从A到B跳转的问题?还有然后当我们解决了一个问题以后出现了第二个问题当出现多个item的时候如何从中进行跳转? 为此我们需要提前储备一些些知识。 需要先了解一些这篇文章如果对于item的点击事件不太了解的话。 Android中RecyclerView的Item点击事件(总结) 我们先来看一下实现的效果 这个是点击同意后进入后的ac...
实现点击item中的按钮跳转至另一个Activity
这个是一个小功能的实现,是我在面试过程中遇到的一个问题。在这里记下来,一方面,便于自己日后复习,另一方面,也希望有一天能够有初学者看到这篇文章并能够给予其帮助。         很简单,我主要是想实现以下功能:         我是设计的一个联系人通讯录,在通话记录Activity中有ListView控件读取手机的通话记录,其中ListView中的item中加入了一个按钮(ibDetails)
android中通过网络请求数据显示在Listview中,面对许多的item,如何给每个item设置点击事件以跳转到不同的activity
转载请声明:转自:http://write.blog.csdn.net/postedit?ref=toolbar&ticket=ST-105924-ewU2sRQe02Za2NeLFgfg-passport.csdn.net
RecyclerView item 点击跳转事件
RecyclerView点击跳转事件实现多个item点击跳转到另一个Activity
RecyclerView的展示及点击跳转
一:根据相关接口生成bean类 二:布局xml android.support.v7.widget.RecyclerView android:layout_width=&quot;match_parent&quot; android:layout_height=&quot;match_parent&quot; android:id=&quot;@+id/recycle_view&quot;&amp;gt;&amp;lt;/android.su...
点击recyclerview的某个条目,跳转到其他界面获取值,再返回之前的条目中将该值显示在条目的控件上
点击recyclerview的某个条目,跳转到其他界面获取值,再返回之前的条目中将该值显示在条目的控件上bug: 如果条目很多,不能显示在一屏,需要滑动时.   点击滑动才能见到的那些条目,跳转到其他界面获取值,然后将获取到的值显示在该条目上时,会报空指针异常解决: goodsList 是Recyclerview的对象,通过goodsList.getLayoutManager()来获取条目的位置V...
Android实现ListView显示信息,点击每个item,跳转到相应界面
界面如下:(做这个目的仅仅是为了学习一点小知识,因为自己才刚开始) 实现的方法比较简单,就是定义一个ListView,然后设置监听,ListView对每个条目的监听是setOnItemClickListener。onItemClick(AdapterView parent, View view, int position, long id)这段代码中,
RecyclerView加载不同item并实现其item点击事件,实现添加常用应用的功能demo
博客地址: http://blog.csdn.net/jiayite/article/details/52335069 与博客内容稍有改动 android studio项目
Android中Recyclerview使用7----条目中按钮点击事件,在activity中调用(接口回调)
Android中Recyclerview使用,Recyclerview在Android开发中非常常用,在条目中如果有按钮,那么按钮的点击事件通过接口回调在,activity中调用
点击RecyclerView的条目跳转
适配器里写代码**有参构造上方写** /*点击rv的item跳转*/ OnItemClickListener listener; public interface OnItemClickListener{ public void OnItemClick(View v,int position,String id); } public void
RecyclerView跳转到指定位置,RecyclerView上下滑动监听
1、RecyclerView跳转到指定位置 只需调用recycleview的置顶方法: recyclerView.scrollToPosition(15); 如果你需要让第15item在屏幕居中,只需吧scrollToPosition参数变小即可: 如: recyclerView.scrollToPosition(12);或 recyclerView.scrollToPosition...
Androd中 listView点击每一个 Item里面的状态,跳转到相对应的不同 界面
最近在做一个项目,里面的功能是,listview的每一个item,一样,但是点击每一个item跳转相对应的界面,不一样,我们一般做的都是跳转到一个相同的界面,传递bundle,这次是不同的界面,传递bundle,小伙伴们知道怎么实现吗: 我这里只是一种解决办法,其他的办法也有很多,请开动脑筋: 设置listview的item监听: mlistView.setOnItemClick
RecyclerView跳转到指定位置的三种方式
自从android5.0推出RecyclerView以后,RecyclerView越来越受广大程序员的热爱了!大家都知道RecyclerView的出现目的是为了替代listview和ScrollView在列表方面的使用!那么listview和ScrollView的所有功能和方法都应该有的!但是RecyclerView的很多方法,不是封装在RecyclerView中的,当我们在RecyclerView
给Recyclerview添加ITEM的点击事件
主要入手点:自定的Adapter中自定义的ViewHolder,持有每个Item的的所有界面元素。Item的点击事件可通过view的OnClick来实现。如果我们要在Activity中监听到item的点击,需要在Adapter中定义一个回调接口。如下:public interface OnItemClickListener{ void onItemClick(View view, int ...
点击listview条目跳转到另一个Activity
核心代码@BindView(R.id.lv_workspaces) ListView mLvWorkspaces; mLvWorkspaces.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(Adap
妹子图APP(三)—— RecyclerView的Item点击事件和图片保存至本地
妹子图APP(三)—— RecyclerView的Item点击事件的设置、页面跳转以及图片保存至本地图库。
RecyclerView展示数据+跳转详情页
//需要的接口compile 'com.squareup.okhttp3:okhttp:3.9.0' compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' compile 'com.google.code.gson:gson:2.4' compile 'com.youth.banner:banner:1.4
Recyclerview点击条目进行跳转,把position和具体的实体进行对应
传递的是list集合,传递整个对象PadComplainAdapter mPadComplainAdapter = new PadComplainAdapter(mContext, mComplainInfoArrayList); mPadComplainAdapter.setOnItemClickListener(new PadComplainAdapter.OnItemClickList
Android listView中点击item或Item中控件跳转对应的详情页面的实现(商品详情查看)
应用场景开发中,特别是电商客户端,用ListView展示商品列表,点击Item 或是Item中的控件会跳转到对应的商品详情,本文主要讲Intent传递数据,实现简单的商品详情展示,实际的开发中是采用传递商品的Id然后在界面加载对应的Json数据并且显示,原理一致。页面效果图如下:这是商品列表 这是商品详情 本文是在适配器里给Button或是其他控件设置点击事件在getView中只复用了Chi
Activity中Recyclerview中item点击事件+传值!!
                                                RecyclerView点击跳转实现传递数据   Activity中Recyclerview中item点击事件无法再Activity中无法直接使用setOnItemClickListener()方法,但是在适配器中是可以用的  @Override public void onBindV...
使用接口实现RecyclerView中的item点击事件
实现思路:在Adapter中编写接口,在MainActivity中实现跳转一:Adapter定义一个接口public interface OnItemClickListener { void onClick(View view,int position); }定义一个方法private OnItemClickListener mOnItemClickListener = n...
点击listview条目向fragment中传值
=========================布局   主布局=================================== LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:back
recyclerview 横向纵向滑动,滑动置顶,跳转到某一项item
recyclerview 横向纵向滑动,滑动置顶,跳转到某一项item
recyclerview点击跳转页
适配器: Onclick aclick; public void setOnclick(Onclick aclick) { this.aclick = aclick; } public interface Onclick{ public void click(int position); } //点击事件 hold...
listview的item跳转的下一个界面点击删除数据,并返回更新listview
怎么描述这个过程呢。其实是这样的,我现在有一个功能 是一个名片夹的功能。listview里面可能有10个数据,我随便点击一个,进去之后展示名片信息详情页。这个详情页有一个删除按钮,删除这个名片信息。然后finish();返回listview界面,并更新界面数据。 先看listview点击事件里面。可以拿到每一个选项卡,再跳转的时候通过startActivityForResult() intent
抽屉点击进入对应的Activity
//切换页面 1.首先定义每个页面 public static final int A_FRAG = 0; public static final int B_FRAG = 1; public static final int C_FRAG = 2; 2.调用一个方法 public void swichPage(int id){ vp_text.setCurrentItem(id,fals...
详解Android中回调机制与RecyclerView的Item点击事件实现
利用RecyclerView的例子,解释回调的概念。 实现RecyclerView的详细Item点击事件。
android ScrollView 嵌套RecyclerView 快速滑动粘黏问题
android.support.v7.widget.RecyclerView android:id="@+id/v_logistics_list" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/wh
关于gridView上点击某个item实现跳转结果跳转失败
萌新没好好学习采坑系列 MainActivity.java //绑定数据并显示 gridView.setAdapter(saImageItems); gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override ...
recyclerview点击item使内容可见隐藏
package com.github.why168.filedownloader.recyclerviewtoggle; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.Vi...
使用委托模式在Activity中操作RecyclerView中的item
RecyclerView与ListView不同,无法直接通过setItemClicklistener来获得单个item的点击时间,这个时候,我们可以通过在adapter中定义接口,并在Activity中实现相应接口来获得每个Item的点击事件,也就是标准的委托模式。 具体做法如下:第一步 在Adapter类中定义内部接口,我自己定义的如下: /** * 在活动中实现的接口 */
RecyclerView的item布局中包含EditText,点击非EditTex控件取消EditText的光标并收起键盘
在RecyclerView引入了多布局(含有EditTex)t ,查找了一下午的百度,google怎么去取消这个EditText光标 ,发现自己忽略了一点问题 问题: RecyclerView的item布局中包含EditText,点击非EditTex控件取消EditText的光标并收起键盘 解决 : @Override public boolean dispatchTouchEvent(M...
RecyclerView使用,RecyclerView使用,增加一个item,删除一个item,更新数据,item点击事件
build.gradle compile 'com.android.support:appcompat-v7:24.2.0' compile 'com.android.support:recyclerview-v7:24.2.0'main_activity.xml<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:androi
经验总结-RecyclerView列表中获取每个item中已经选择的CheckBox值
最近在做一个公司的项目—平板广告机,相当于一个超大手机里面打开一个App。需求中有一个功能是从服务器获取广告机可能出现的问题数据,Android开发人员用列表显示,这些数据是给公司的检修人员看的。 需求:点击页面上的一个按钮,弹出一个包含列表的页面,列表的每一项中只含有一个CheckBox控件,如果选中相应的CheckBox控件,那么当检修人员点击提交按钮时,会把每个选中的CheckBo
【 Android 】使用 RecyclerView 实现页面滑动和多个不同类别的 item 展示
示例图片: 1.gif 实现思路: 开发文档要求这个页面,上半部分不动,下半部分当一个页面展示不全,是可以滑动的。 我最初的想法是 ScrollView + RecyclerView 。但是在机器上运行之后,发现控件之间发生了冲突,RecyclerView 显示不全。经过了一段时间的思考,最终选择使用 RecyclerView + Recyc...
Android之ListView列表视图和界面跳转实现
通过一个例子实现ListView列表视图并且点击不同的项进入不同的界面,需要的可以看看
android 选中一个Activity的ListView的item后如何传值到另一个Activity的ListView
恳请前辈们指教 选中一个Activity的ListView的item后如何传值到另一个Activity的ListView 如图: 选中几个item,点击“完成”后,就把选中的item显示到到下面这个页面的ListView,请问大神怎么传值啊(这两个ListView是不同Activity的)
给RecyclerView的Item添加点击事件
RecyclerView监听事件处理在ListView使用的时候,该控件给我们提供一个onItemClickListener监听器,这样当我们点击Item的时候,会回调相关的方法,以便我们方便处理Item点击事件。对于RecyclerView来讲,非常可惜的是,该控件没有给我们提供这样的内置监听器方法,不过我们可以进行改造实现,可以这样实现Item的点击事件的监听,在我们的adapter中增加下面
RecyclerView中解决item点击持久变色问题
项目想在item点击选中的状态下变色  改变里面的选中状态,用radiobutton 也可以,但是有点麻烦, 可以用别人写好的的框架, 项目用的是advb框架,可以根据自己的需求再行封装达到自己的想要方法, 1.在adapter 中给一个标识数字, public int ischecked = -1; 2. 设置需要改变的view view.setSelected
RecyclerView滚动指定条目并在页面中居中
本次的需求是通过指定position来控制条目滚动,并且要滚动到指定到中间的位置。