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
首先我们需要解决一个问题rnRecyclerView中的item如何从A到B跳转的问题?还有然后当我们解决了一个问题以后出现了第二个问题当出现多个item的时候如何从中进行跳转?rn为此我们需要提前储备一些些知识。rn需要先了解一些这篇文章如果对于item的点击事件不太了解的话。rnAndroid中RecyclerView的Item点击事件(总结)rn我们先来看一下实现的效果rnrn这个是点击同意后进入后的ac...
实现点击item中的按钮跳转至另一个Activity
这个是一个小功能的实现,是我在面试过程中遇到的一个问题。在这里记下来,一方面,便于自己日后复习,另一方面,也希望有一天能够有初学者看到这篇文章并能够给予其帮助。rn        很简单,我主要是想实现以下功能:rn        我是设计的一个联系人通讯录,在通话记录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的某个条目,跳转到其他界面获取值,再返回之前的条目中将该值显示在条目的控件上
点击recyclerview的某个条目,跳转到其他界面获取值,再返回之前的条目中将该值显示在条目的控件上bug: 如果条目很多,不能显示在一屏,需要滑动时.   点击滑动才能见到的那些条目,跳转到其他界面获取值,然后将获取到的值显示在该条目上时,会报空指针异常解决: goodsList 是Recyclerview的对象,通过goodsList.getLayoutManager()来获取条目的位置V...
点击listview条目跳转到另一个Activity
核心代码@BindView(R.id.lv_workspaces)n ListView mLvWorkspaces;nmLvWorkspaces.setOnItemClickListener(new AdapterView.OnItemClickListener() {n @Overriden public void onItemClick(Adap
RecyclerView跳转到指定位置的三种方式
自从android5.0推出RecyclerView以后,RecyclerView越来越受广大程序员的热爱了!大家都知道RecyclerView的出现目的是为了替代listview和ScrollView在列表方面的使用!那么listview和ScrollView的所有功能和方法都应该有的!但是RecyclerView的很多方法,不是封装在RecyclerView中的,当我们在RecyclerView
点击RecyclerView的条目跳转
适配器里写代码**有参构造上方写**n /*点击rv的item跳转*/n OnItemClickListener listener;n public interface OnItemClickListener{n public void OnItemClick(View v,int position,String id);n }n public void
RecyclerView的展示及点击跳转
一:根据相关接口生成bean类nn二:布局xmlnnnandroid.support.v7.widget.RecyclerViewn android:layout_width=&quot;match_parent&quot;n android:layout_height=&quot;match_parent&quot;n android:id=&quot;@+id/recycle_view&quot;&amp;gt;&amp;lt;/android.su...
Android中Recyclerview使用7----条目中按钮点击事件,在activity中调用(接口回调)
Android中Recyclerview使用,Recyclerview在Android开发中非常常用,在条目中如果有按钮,那么按钮的点击事件通过接口回调在,activity中调用
Android实现ListView显示信息,点击每个item,跳转到相应界面
界面如下:(做这个目的仅仅是为了学习一点小知识,因为自己才刚开始)nnnnnnnnnnnn实现的方法比较简单,就是定义一个ListView,然后设置监听,ListView对每个条目的监听是setOnItemClickListener。onItemClick(AdapterView parent, View view, int position, long id)这段代码中,
RecyclerView跳转到指定位置,RecyclerView上下滑动监听
1、RecyclerView跳转到指定位置nn只需调用recycleview的置顶方法:nnnrecyclerView.scrollToPosition(15);nn如果你需要让第15item在屏幕居中,只需吧scrollToPosition参数变小即可:nn如:nnrecyclerView.scrollToPosition(12);或nnrecyclerView.scrollToPosition...
给Recyclerview添加ITEM的点击事件
主要入手点:自定的Adapter中自定义的ViewHolder,持有每个Item的的所有界面元素。Item的点击事件可通过view的OnClick来实现。如果我们要在Activity中监听到item的点击,需要在Adapter中定义一个回调接口。如下:public interface OnItemClickListener{n void onItemClick(View view, int ...
Android listView中点击item或Item中控件跳转对应的详情页面的实现(商品详情查看)
应用场景开发中,特别是电商客户端,用ListView展示商品列表,点击Item 或是Item中的控件会跳转到对应的商品详情,本文主要讲Intent传递数据,实现简单的商品详情展示,实际的开发中是采用传递商品的Id然后在界面加载对应的Json数据并且显示,原理一致。页面效果图如下:这是商品列表 n n这是商品详情 n本文是在适配器里给Button或是其他控件设置点击事件在getView中只复用了Chi
妹子图APP(三)—— RecyclerView的Item点击事件和图片保存至本地
妹子图APP(三)—— RecyclerView的Item点击事件的设置、页面跳转以及图片保存至本地图库。
Activity中Recyclerview中item点击事件+传值!!
 nn                                              RecyclerView点击跳转实现传递数据nn nnActivity中Recyclerview中item点击事件无法再Activity中无法直接使用setOnItemClickListener()方法,但是在适配器中是可以用的 nnn@Overriden public void onBindV...
Androd中 listView点击每一个 Item里面的状态,跳转到相对应的不同 界面
最近在做一个项目,里面的功能是,listview的每一个item,一样,但是点击每一个item跳转相对应的界面,不一样,我们一般做的都是跳转到一个相同的界面,传递bundle,这次是不同的界面,传递bundle,小伙伴们知道怎么实现吗:rn我这里只是一种解决办法,其他的办法也有很多,请开动脑筋:rnrnrn设置listview的item监听:rnrnmlistView.setOnItemClick
使用接口实现RecyclerView中的item点击事件
实现思路:在Adapter中编写接口,在MainActivity中实现跳转一:Adapter定义一个接口public interface OnItemClickListener {n void onClick(View view,int position);n }定义一个方法private OnItemClickListener mOnItemClickListener = n...
Recyclerview点击条目进行跳转,把position和具体的实体进行对应
传递的是list集合,传递整个对象PadComplainAdapter mPadComplainAdapter = new PadComplainAdapter(mContext, mComplainInfoArrayList); mPadComplainAdapter.setOnItemClickListener(new PadComplainAdapter.OnItemClickList
RecyclerView展示数据+跳转详情页
//需要的接口compile 'com.squareup.okhttp3:okhttp:3.9.0'ncompile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'ncompile 'com.google.code.gson:gson:2.4'ncompile 'com.youth.banner:banner:1.4
recyclerview 横向纵向滑动,滑动置顶,跳转到某一项item
recyclerview 横向纵向滑动,滑动置顶,跳转到某一项item
抽屉点击进入对应的Activity
//切换页面n1.首先定义每个页面npublic static final int A_FRAG = 0;npublic static final int B_FRAG = 1;npublic static final int C_FRAG = 2;n2.调用一个方法npublic void swichPage(int id){n vp_text.setCurrentItem(id,fals...
关于gridView上点击某个item实现跳转结果跳转失败
萌新没好好学习采坑系列nnMainActivity.javannn//绑定数据并显示n gridView.setAdapter(saImageItems);n gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {n @Overriden ...
recyclerview点击跳转页
适配器:n Onclick aclick;nn public void setOnclick(Onclick aclick) {n this.aclick = aclick;n }n public interface Onclick{n public void click(int position);n }nn //点击事件n hold...
【 Android 】使用 RecyclerView 实现页面滑动和多个不同类别的 item 展示
n n n 示例图片:nnnnnnn1.gifnn实现思路:n开发文档要求这个页面,上半部分不动,下半部分当一个页面展示不全,是可以滑动的。n我最初的想法是 ScrollView + RecyclerView 。但是在机器上运行之后,发现控件之间发生了冲突,RecyclerView 显示不全。经过了一段时间的思考,最终选择使用 RecyclerView + Recyc...
怎么在RecyclerView的适配器Adapter实现点击跳转事件(关键找到context上下文)
这个下问题还是在项目中遇到的,查了好多资料才明白,废话不多说,先看一下效果图(一个RecyclerView列表,点击列表中的条目,弹出图提示框,并跳转到另外一个Activity)nnhttps://weibo.com/tv/v/H9YPaiFtz?fid=1034:4323787475205327 nn上面链接就是效果。点击是在Adapter里面实现的,刚开始我也是和大家一样不明白为什么写了下面的...
RecyclerView中解决item点击持久变色问题
项目想在item点击选中的状态下变色  改变里面的选中状态,用radiobutton 也可以,但是有点麻烦,rn可以用别人写好的的框架, 项目用的是advb框架,可以根据自己的需求再行封装达到自己的想要方法,rnrnrn1.在adapter 中给一个标识数字,rnrnpublic int ischecked = -1;rn2. 设置需要改变的viewrnrnrnrnview.setSelected
RecyclerView滚动指定条目并在页面中居中
本次的需求是通过指定position来控制条目滚动,并且要滚动到指定到中间的位置。
使用委托模式在Activity中操作RecyclerView中的item
RecyclerView与ListView不同,无法直接通过setItemClicklistener来获得单个item的点击时间,这个时候,我们可以通过在adapter中定义接口,并在Activity中实现相应接口来获得每个Item的点击事件,也就是标准的委托模式。n具体做法如下:第一步 在Adapter类中定义内部接口,我自己定义的如下: /**n * 在活动中实现的接口n */
listview的item跳转的下一个界面点击删除数据,并返回更新listview
怎么描述这个过程呢。其实是这样的,我现在有一个功能 是一个名片夹的功能。listview里面可能有10个数据,我随便点击一个,进去之后展示名片信息详情页。这个详情页有一个删除按钮,删除这个名片信息。然后finish();返回listview界面,并更新界面数据。rn先看listview点击事件里面。可以拿到每一个选项卡,再跳转的时候通过startActivityForResult() intent
RecyclerView实现点击切换
RecyclerView点击切换视图
详解Android中回调机制与RecyclerView的Item点击事件实现
利用RecyclerView的例子,解释回调的概念。n实现RecyclerView的详细Item点击事件。
Android之ListView列表视图和界面跳转实现
通过一个例子实现ListView列表视图并且点击不同的项进入不同的界面,需要的可以看看
不同位置动态点击图标放大跳转至新Activity
不同位置动态点击图标放大跳转至新Activity
RecyclerView的item布局中包含EditText,点击非EditTex控件取消EditText的光标并收起键盘
在RecyclerView引入了多布局(含有EditTex)t ,查找了一下午的百度,google怎么去取消这个EditText光标 ,发现自己忽略了一点问题nn问题: RecyclerView的item布局中包含EditText,点击非EditTex控件取消EditText的光标并收起键盘nn解决 : nn@Overridenpublic boolean dispatchTouchEvent(M...
RecyclerView使用,RecyclerView使用,增加一个item,删除一个item,更新数据,item点击事件
build.gradle compile 'com.android.support:appcompat-v7:24.2.0'n compile 'com.android.support:recyclerview-v7:24.2.0'main_activity.xml<?xml version="1.0" encoding="utf-8"?>n<LinearLayout xmlns:androi
关于Recyclerview删除item后的数据乱跳问题
recyclerview的使用就不多说了简单使用自己看吧,很easy使用recyclerview,有很多炫酷的效果,比如item的插入,item的删除,item每个条目的加载动画,都可以自己去设置,当然也有默认的动画。需求逻辑: n recyclerview列表里面有1 , 2,3,4四个item。现在通过点击item3(position =1)进入详情,在详情里面删除此条目,在返回到recy
recyclerview点击item使内容可见隐藏
npackage com.github.why168.filedownloader.recyclerviewtoggle;nnimport android.content.Context;nimport android.support.v7.widget.RecyclerView;nimport android.view.LayoutInflater;nimport android.view.Vi...
给RecyclerView的Item添加点击事件
RecyclerView监听事件处理在ListView使用的时候,该控件给我们提供一个onItemClickListener监听器,这样当我们点击Item的时候,会回调相关的方法,以便我们方便处理Item点击事件。对于RecyclerView来讲,非常可惜的是,该控件没有给我们提供这样的内置监听器方法,不过我们可以进行改造实现,可以这样实现Item的点击事件的监听,在我们的adapter中增加下面
Android开发中动态获取RecyclerView的Item中EditText的内容
Android开发中动态获取RecyclerView的Item中EditText的内容,详细描述可见我的博客:http://blog.csdn.net/ch1451082329/article/details/52514910
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 视频跳转到网页怎么制作 如何实现云计算