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

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数据传递比较规范一些,具体原因就不解释了。

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

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

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
如何点击listView的item跳转到指定的Activity
当我们在做demo时,为了简化代码,常用listView来做,当我们点击listView的item时,跳转到某个activity测试相应功能,而主界面的listview就封装了每个activity的入口, 我们都知道点击listView的某个item让他弹出一个toast,我们如何点击item让他跳转到一个activity呢?其实也差不多,关键是得把每个activity转成xxxActivity
点击Item显示内容
public class MainActivity extends AppCompatActivity {    private Unbinder unbinder;    @BindView(R.id.gv_id)    GridView gv;    private List data = new ArrayList;    @Override    protected void onCrea
RecyclerView的item点击,长按事件
利用回调: 在RecycleView.Adapter中: 加入接口(如果除了点击item和position外还需要别的参数,可在此时加入): public interface OnItemClickListener{ void onItemClick(View view,int position); } 然后加入: private OnItemClickListe
RecyclerView 点击item问题
[img=https://img-bbs.csdn.net/upload/201707/17/1500274749_481084.png][/img]rnrn如上图写的点击回调事件会报出错误:Do not treat position as fixed; only use immediately and call holder.getAdapterPosition() to look it up laterrnrn搜索了之后是说不要固定position,而是当你什么时候需要用的时候直接通过holder.getAdapterPosition来取到,rnrn但是holder.getAdapterPosition取到的是视图在整个RecyclerView 的位置,如果RecyclerView 添加了头部视图那么这个位置也包含头部视图占据的位置(比如:我点击第一个item本来position为0,但是我添加一个头部视图之后这个position就变成1了),rn我用到的是一个第三方带下拉刷新上拉加载的RecyclerView ,所以这样写的话就会报数组越界;rnrn然后写holder.getAdapterPosition-1,但是这样写的话也太特定了,比如在后续代码中可能会添加一个或者多个头部视图了那这样写明显也是不对的;rnrn然后我现在是这样写的“:rn[img=https://img-bbs.csdn.net/upload/201707/17/1500275231_329922.png][/img]rnrn这样当鼠标放在onBindViewHolder方法的position处时是没有提示错误的rnrn但是看stackoverflow上面将好像最好也不要这样写;rnrn所以我现在迷糊了啊,到底是要怎么来获取这个position了,rnrn如果我在item里面还设置了一个Button,我需要获取这个item的position传给Button的点击回调
recyclerview之item点击事件监听
用过recyclerview的朋友们都知道,recyclerview不负责item视图的布局以及显示,所以也就没有为item开发点击事件,那么当我们需要对recyclerview的item做点击事件的时候,就只能自己来实现了,我主要是在recyclerview的适配器中设置接口,来实现recyclerview的点击监听,这里我是零时做了一个简单的demo,下面请看代码: adapter中代码:
RecyclerView的Item和Item内的控件点击处理
需求场景:RecyclerView的Item需要点击,或者Item中的某个控件需要点击,或者两者同时需要点击处理。 一、adapter代码如下: package com.ldw.adapter; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.v
实现点击item中的按钮跳转至另一个Activity
这个是一个小功能的实现,是我在面试过程中遇到的一个问题。在这里记下来,一方面,便于自己日后复习,另一方面,也希望有一天能够有初学者看到这篇文章并能够给予其帮助。         很简单,我主要是想实现以下功能:         我是设计的一个联系人通讯录,在通话记录Activity中有ListView控件读取手机的通话记录,其中ListView中的item中加入了一个按钮(ibDetails)
RecyclerView显示不同item
RecyclerView显示不同的item;
Activity中Recyclerview中item点击事件+传值!!
                                                RecyclerView点击跳转实现传递数据   Activity中Recyclerview中item点击事件无法再Activity中无法直接使用setOnItemClickListener()方法,但是在适配器中是可以用的  @Override public void onBindV...
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...
在RecyclerView中实现item点击效果
在RecyclerView中实现item点击效果,相关博文:http://www.cnblogs.com/tianzhijiexian/p/4066589.html
recyclerView实现item视频播放
recyclerView实现item视频播放 item全部是视频 包括视频的 暂停 快进 全屏 等功能 绝对无bug 亲测 需要的小伙伴赶紧下载 看看效果吧
RecyclerView实现item点击事件
RecycleView已经面世很久,现在我们几乎都在用它,很少会去用listView了,好处我就不说了,但是RecycleView有一个缺点,没有子项的点击事件,也就是列表中的每一个item的点击事件需要我们自己去实现。下面我就来讲一下,在adapter中是如何实现的(网上其实也有很多例子,我为什么还要写呢。。。至少可以加深自己对RecyclerView的理解) 先上Adapter里面的代码吧 p...
RecyclerView跳转到其他位置
在 RecyclerView对应的父容器中加入 android:focusable="true" android:focusableInTouchMode="true"  属性即可
RecyclerView点击Item回到顶部
转载注明出处: 这两天用两个个RecyclerView实现二级菜单,却不曾想出现了一个bug.        如果RecyclerView上拉过(屏幕第一条数据并不是List的第一条数据),无论点击父的还是子的item,父RecyclerView会自动刷新并回到顶部.如果子RecyclerView也被上拉了,无论点击父的还是子的item,子RecyclerView都不会刷新回到顶部!如
RecyclerView的Item设置点击监听事件
RecyclerView作为安卓5.0之后推出的优秀控件,其方便性和可最大定制性,让它比listview更让开发者青睐,也正是由于RecyclerView的可定制性太强,好多功能实现都需要自己来写,今天我简单梳理下在RecyclerView中给Item设置点击事件的实现流程。RecyclerView不像ListView给开发者提供了setOnItemClickListener()方法,但是要实现监
RecyclerView item 点击跳转事件
RecyclerView点击跳转事件实现多个item点击跳转到另一个Activity
RecyclerView的添加点击item的监听器
参考文章:http://blog.csdn.net/guxiao1201/article/details/40423361 思路是:因为ViewHolder我们可以拿到每个Item的根布局,所以如果我们为根布局设置单独的OnClick监听并将其开放给Adapter,那不就可以在组装RecyclerView时就能够设置ItemClickListener,只不过这个Listener不是设置到Recy
RecyclerView中的item点击事件
1.在adapter中: private RecyclerView rv; @Override public void onAttachedToRecyclerView(RecyclerView recyclerView) { super.onAttachedToRecyclerView(recyclerView); rv = recyclerView; } public
Android RecyclerView 实现item点击水波纹动画效果
Recyclerview的item如果如果加上水波纹动画的点击效果会使列表的ui体验效果提升很多,今天来给大家介绍一下如何给Recyclerivew的item view添加这样的动画效果。 在res目录的drawable目录和drawable-v21下分别建立linerlayout_water_selector.xml文件。 drawable目录下的linerlayout_water_sele...
RecyclerView 超简单item点击实现
最近一直在使用RecyclerView发现并没有item的点击监听,于是去百度,网上各种实现方式,于是自己进行研究,发现了一种超简单实现方案,我在想既然每一个item都是一个view,那是不是可以给每一个item添加一个父容器,然后赋予id,在viewholder中给其click监听,在让viewholder实现其接口!以下是代码实现class WinAadpter extends Recycler
listview中如何修改点击的item的内容
adapter继承了baseadapter,现在我想修改任意点击的item中的内容,请问在getview中应如何设置
RecyclerView学习笔记整理(3)解决item中关于跳转到另一个Activity的问题和判断多个item进行跳转到另一个Activity
首先我们需要解决一个问题 RecyclerView中的item如何从A到B跳转的问题?还有然后当我们解决了一个问题以后出现了第二个问题当出现多个item的时候如何从中进行跳转? 为此我们需要提前储备一些些知识。 需要先了解一些这篇文章如果对于item的点击事件不太了解的话。 Android中RecyclerView的Item点击事件(总结) 我们先来看一下实现的效果 这个是点击同意后进入后的ac...
在RecyclerView中自定义Item点击监听
分析ListView有很方便的AdapterView.OnItemClickListener接口,通过一个.setOnItemClickListener(context)即可方便的设置每个Item的点击事件,但RecyclerView没有这样的接口,但在实际编码过程中,我们需要自己写一个接口。设计 利用Java的代理机制 Google提供了另一个内部接口:OnItemTouchListener 实现
RecyclerView布局的点击(并非item的点击)
近期在开发过程中,遇到这样的一个需求:横向列表点击跳转。                               也算是几年的老开发,第一个想到的当然是HorizontalListView.          又想到5.0以后出了一个特别好用的RecyclerView,支持ListView的各种展示效果,          所以就研究了一下,发现使用起来特别简单,就开始用Recycl
点击listview的某一个Item跳转到新界面并显示问题怎么实现?
如图rn[img=https://img-bbs.csdn.net/upload/201410/24/1414120692_824160.jpg][/img]rn点击其中一个Item跳转到下面的界面rn[img=https://img-bbs.csdn.net/upload/201410/24/1414120746_676040.jpg][/img]rn这是怎么实现的?rn内容详情的格式是要自己定义还是直接通过一个Textview获取他本来的格式的得到?rn
RecyclerView显示不同的类型的item
1 .复写RecyclerView的Adapter中的getItemViewType 方法 @Override public int getItemViewType(int position) { if (position == 0) { return ITEM_TYEP_2; //左边的 } else { return ITEM_
RecyclerView显示多种Item布局
如果大家不了解RecyclerView,请点击下面博客先进行了解: http://blog.csdn.net/zheng_jiao/article/details/52389707 如果大家使用过RecyclerView,显示多个item非常简单; 我们项目中有6个不同的布局,在这里我为了大家方便查看,我显示2个不同的布局; /** * Created by ZhengJiao on
RecyclerView显示Item布局不一致
RecyclerView显示Item布局不一致在自定义RecyclerAdapter的时候,在重写onCreateViewHolder方法是使用了 @Override public H onCreateViewHolder(ViewGroup parent, int viewType) { View view=View.inflate(context,layoutId,
RecyclerView 获取显示item的位置
rvview.setOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recycl
Gridview的第一个Item点击没反应,点击其他的item OK
遇到一个前人挖下的大坑,各种没响应的呀,后来发现以下代码有问题!!!: 第一,getView中converView [code=&quot;java&quot;] @Override public View getView(final int position, View convertView, ViewGroup parent) { if (convertView==null) {} }[/c...
如何实现鼠标点击listctrl中一行item时旁边编辑框内同步显示item的内容
如何实现鼠标点击listctrl中一行item时旁边编辑框内同步显示item的内容rn我的listctrl变量是CListCtrl m_list,编辑框有两个,对应定义变量分别为CString m_Name,CString m_Userrn我是菜鸟,比较弱,惭愧!rn请高手给出操作,给出代码,具体一点,谢谢!谢谢!
Android如何实现RecyclerView的item的展开及显示并让item位于头部
RecyclerView的初始化并设置适配器等 RecyclerView.ItemAnimator animator=recyclerView.getItemAnimator(); if(animator instanceof SimpleItemAnimator){ ((SimpleItemAnimator)animator).setSupportsChangeAnimations(f
android怎么实现点击微信分享的内容跳转到activity
微信分享功能就用过一次,知道可以分享文本、图片和视频。如果是链接点击可以跳转到对应的网页。但不知道怎么实现点击分享的内容跳转到activity。不知道微信能否实现这种功能。哪位大神知道,还请赐教!
iOS开发UICollectionView 跳转到指定 item 解决方法
今天在自定义控件过程中需要解决 collectionView 跳转到指定 item 的功能,在此记录下两种方法和效果差异 方式一:滚动到指定 item [self.collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForItem:indexPath.item inSection:0] atScrollPosition:U...
RecyclerView 选择多个item的实现
模仿网易新闻客户端阅读偏好的频道选择,先看实现的页面: 直接上代码:
RecyclerView的Item点击事件实现总结
自从开始使用RecyclerView代替ListView,会发现有很多地方需要学习。前一段时间的学习记录有: RecyclerView的滚动事件研究 - DevWiki RecyclerView的ViewHolder和Adapter的封装优化 - DevWiki RecyclerView问题记录 - DevWiki 实现 RecyclerView的Item的点击事件
Android RecyclerView 点击Item Item变大缩小的效果
Android RecyclerView 点击Item Item变大的效果Demo
RecyclerView实现多种item布局
在项目中列表是基本都会用到的,然而在显示列表时,我们需要的数据可能需要不止一种item显示,对于复杂的数据就需要多种item,以不同的样式显示出来,这样效果是很棒的,我们先看一下效果 我们可以看到,这个RecyclerView中有多种item显示出来,那么具体怎么实现呢,其实在RecyclerView中,我们可以重写方法getItemViewType(),这个方法会传进一个参数posit
接口回调----点击item中的ImageView,在Activity中显示dialog
用接口回调实现 : 点击listview的item中的一个图标,在activity中弹出一个dialog.
相关热词 c# stream 复制 android c# c#监测窗口句柄 c# md5 引用 c# 判断tabtip 自己写个浏览器程序c# c# 字符串变成整数数组 c#语言编程写出一个方法 c# 转盘抽奖 c#选中treeview