RecyclerView嵌套RecyclerView

RecyclerView系列:RecyclerView嵌套RecyclerView(BaseRecyclerViewAdapterHelper实现) 看效果图: 先导入依赖包: 导入BaseRecyclerViewAdapterHelper和RecyclerView 把RecyclerView整到布局activity_main.xml中去。 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.and 阅读详情

在项目中有时候遇到recyclerview嵌套recyclerview的情况,虽然不建议这样嵌套使用,但有时候也没办法。
示例:
这里写图片描述
代码如下:
1、在Activity中代码如下

package com.example.recyclerview;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;

import java.util.ArrayList;

import adapter.MyListAdapter;

public class MainActivity extends AppCompatActivity {
    private RecyclerView recyclerview;
    private ArrayList list;
    private MyListAdapter listAdapter;
    private LinearLayoutManager linearLayoutManager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        recyclerview= (RecyclerView) findViewById(R.id.recyclerview);
        linearLayoutManager=new LinearLayoutManager(this);
        linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        recyclerview.setLayoutManager(linearLayoutManager);
        initDate();
        listAdapter=new MyListAdapter(this,list);
        recyclerview.setAdapter(listAdapter);
    }
    private void initDate() {
        list=new ArrayList();
        for(int i=0;i<15;i++){
            list.add("this is "+i);
        }
    }
}

2、在ListAdapter中

package adapter;

import android.content.Context;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.example.recyclerview.R;

import java.util.ArrayList;

/**
 * Created by Administrator on 2016/12/11.
 */

public class MyListAdapter extends RecyclerView.Adapter<MyListAdapter.MyViewHolder> {

    private ArrayList list;
    private Context context;
    private GridLayoutManager gridLayoutManager;
    private ArrayList list_image;

    public MyListAdapter(Context context, ArrayList list) {
        this.list = list;
        this.context = context;
        gridLayoutManager =new GridLayoutManager(context,3);
        gridLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
        list_image=new ArrayList();
        list_image.add("http://e.hiphotos.baidu.com/movie/pic/item/7aec54e736d12f2ec564664446c2d562853568b5.jpg");
        list_image.add("http://c.hiphotos.baidu.com/movie/pic/item/e4dde71190ef76c6e52d8fe29516fdfaae51677f.jpg");
        list_image.add("http://c.hiphotos.baidu.com/movie/pic/item/fd039245d688d43f5d3648ec741ed21b0ef43b15.jpg");
        list_image.add("http://e.hiphotos.baidu.com/movie/pic/item/1ad5ad6eddc451da65ded2f5bffd5266d0163280.jpg");
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.list_item, null);
        MyViewHolder holder = new MyViewHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
        holder.tv.setText(list.get(position).toString());
        if(list_image.size()>0) {
            holder.recyclerImage.setLayoutManager(gridLayoutManager);
            ImageAdapter adapter = new ImageAdapter(context, list_image);
            holder.recyclerImage.setLayoutManager(new GridLayoutManager(context, 3));
            holder.recyclerImage.setAdapter(adapter);
        }else{
            holder.recyclerImage.setVisibility(View.INVISIBLE);
        }
    }

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

    class MyViewHolder extends RecyclerView.ViewHolder {
        TextView tv;
        RecyclerView recyclerImage;
        public MyViewHolder(View itemView) {
            super(itemView);
            tv= (TextView) itemView.findViewById(R.id.text);
            recyclerImage= (RecyclerView) itemView.findViewById(R.id.recyclerImage);
        }
    }
}

3、最后在List中嵌套recyclerview代码

package adapter;

import android.app.Activity;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.RelativeLayout;

import com.bumptech.glide.Glide;
import com.example.recyclerview.R;

import java.util.ArrayList;

/**
 * Created by Administrator on 2016/12/11.
 */

public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.MyImageHolder> {
    private Context context;
    private ArrayList list;
    private DisplayMetrics dm;

    public ImageAdapter(Context context, ArrayList list){
        this.context=context;
        this.list=list;
        dm = new DisplayMetrics();
        ((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(dm);
    }
    @Override
    public MyImageHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view= LayoutInflater.from(context).inflate(R.layout.list_image,null);
        RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams((dm.widthPixels - dip2px(20)) / 3, (dm.widthPixels - dip2px(20)) / 3);
        view.setLayoutParams(lp);
        MyImageHolder holder=new MyImageHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(MyImageHolder holder, int position) {
        Glide.with(context)
                .load(list.get(position))
                .centerCrop()
                .crossFade()
                .into(holder.imageView);
        holder.itemView.setTag(list.get(position));

    }

    @Override
    public int getItemCount() {
        return list.size();
    }
    class MyImageHolder extends RecyclerView.ViewHolder{
        private ImageView imageView;
        public MyImageHolder(View itemView) {
            super(itemView);
            imageView= (ImageView) itemView.findViewById(R.id.imageview);
        }
    }
    int dip2px(float dpValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (dpValue * scale + 0.5f);
    }
}

代码下载地址:
http://download.youkuaiyun.com/detail/androidxiaogang/9708426

参考大白博客
http://blog.youkuaiyun.com/baiyuliang2013/article/details/51518868

RecyclerView 嵌套 ViewPager 嵌套 RecyclerView 的一种简易的通用框架类 github地址:(https://github.com/liyuzero/NestedRecyclerView) 示例 1. 已知实现方案 AppBarLayout 实现 优:使用简单 劣:1、动画无法衔接,会有停顿 2、上半部分视图会一次加载完毕,会造成两个影响,(1)无法走recyclerView的缓存机制,(2)会使该部分视图的曝光逻辑复杂化 RecyclerView嵌套ViewPager嵌套RecyclerView实现 1. 重写外层RecyclerView的dispatchTo. 阅读详情

相关推荐

解决ViewPager嵌套RecyclerView,RecyclerView嵌套RecyclerView瀑布流事件冲突问题

1.瀑布流效果 2.嵌套滚动效果实现 3.嵌套滚动浮动菜单栏 3.1嵌套事件链接机制 3.2实现上拉刷新,上拉加载更多

Tiger的专栏 2053

RecyclerView如何嵌套RecyclerView

Linearlayoutmanager RecyclerView嵌套GridLayoutManager RecyclerView 布局方式:以一个GridLayoutManager的recyclerview作为Linearlayoutmanager RecyclerView的itemview MainRecyclerAdapter.java public class MainRecyclerAdapter extends RecyclerView.Adapter<MainRecyclerAdap

Jonly_W的博客 2845

scrollview嵌套viewpager嵌套fragment嵌套recyclerview

scrollview嵌套viewpager嵌套fragment嵌套recyclerview 效果图: 问题1: scrollview嵌套viewpager,viewpager不显示的问题 解决方法:给scrollview加上android:fillViewport=”true”属性 问题2: viewpager只显示一个屏幕的数据,scrollview没法继续滑动。 解决...

秦时明月 1万+

RecyclerView嵌套RecyclerView布局实现

内容:一个垂直的RecyclerView嵌套一个横向的RecyclerView 代码如下: Main布局 这里只包含了一个RecyclerView布局 &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/andro...

Mr_Leixiansheng的博客 3032

两层RecyclerView嵌套处理滑动冲突

项目中难免遇到需要嵌套RecyclerView的情况,本文主要记录一下自己在工作中遇到的嵌套RecyclerView时滑动冲突的问题,方便以后查看。 页面中使用了CoordinatorLayout控件实现头部状态栏吸顶效果,状态栏下方使用了RV控件嵌套,底部是WebView,在向上滑动时由于RV嵌套出现了滑动冲突,状态栏没有向上滑动,RV控件先于状态栏向上滑动了。 ...

zhao_110的博客 2756

RecyclerView嵌套横向RecyclerView卡顿问题

自定义RecyclerView重写下面两个方法,屏蔽RecyclerView的滑动监听: @Override public boolean onInterceptTouchEvent(MotionEvent e) { //返回false,则把事件交给子控件的onInterceptTouchEvent()处理 return false; } @Override publi...

qq_34220036的博客 4382

Android中RecyclerView嵌套RecyclerView

前言这两天在做一个新的APP,在考虑用户体验上要一个两级的列表嵌套,于就想看看RecyclerView是否能做出这样的效果,自己写了一个DEMO来做一下测试,最后的效果还是比较满意的。下...

Vaccae的博客 1696

android ScrollView嵌套RecyclerView

但是,RecyclerView使用这个方法却行不通。嵌套RecyclerView,不是要重写RecyclerView,而是要重写LayoutManager,比如LinearLayoutManager、GridLayoutManager和StaggeredGridLayoutManager。但是值得注意的是,如果recyclerView很长那么强烈不建议去做嵌套,因为这样recyclerView会在展示的时候立刻展示所

Picasso_L的专栏 2万+

Recyclerview 嵌套Recyclerview

一  首先写主Recycler的逻辑:  (这里用的是BaseFragment ,大家可以忽视里面的一些重载方法 ,直接在onCreateView里面写) public class FavouriteFragment extends BaseFragment { @BindView(recyclerview) RecyclerView mRecyclerv

凯文欧巴的IT全攻略 635

实现嵌套RecyclerView的完整示例

<variable

weixin_36122351的博客 1009

Recyclerview的嵌套使用(嵌套recyclerview)

Recyclerview的嵌套使用(嵌套recyclerview),详细的代码解释说明,简单的Demo案例,让你快速上手

RecyclerView(二)——双层RecyclerView嵌套

如上图所示,此页面包含两个RecyclerView的嵌套实现,外层为瀑布流布局,里层为线性布局。 1 里层线性布局书籍列表部分 1.1 ChildAdapter public class ChildAdapter extends RecyclerView.Adapter<ChildAdapter.ChildViewHolder> { private List<S...

qq_31573123的博客 3085

Android RecyclerView的卡顿问题的解决方法

本篇文章主要介绍了Android RecyclerView的卡顿问题的解决方法,具有一定的参考价值,有兴趣的可以了解一下。

RecyclerView嵌套RecyclerView的滑动问题如何解

一、概述 虽然今天我们要说的是Rv嵌套Rv的问题,但多数情况下我们都不会使用Rv嵌套Rv,去实现复杂的列表,而使用多个itemType实现,再难点的配合GridLayoutManager.SpanSizeLookup一起解决。 因为Rv嵌套Rv会有问题,如果嵌套的Rv高度没有设置明确的值,会一次创建所有的item,造成卡顿问题。类似我们在NestedScrollView里面嵌套Rv,Rv的高度写的是wrap_content/match_parent,一样的情况。 既然高度不确定,那我们给嵌套的Rv指定高度,

ganduwei的博客 4389

瑞芯微RK3576开发板实战:6TOPS NPU如何加速你的AIoT项目(附性能测试)

本文以瑞芯微RK3576开发板为核心,深入探讨其6TOPS NPU在AIoT项目中的实战应用。通过详细的性能测试对比,展示了NPU如何将AI模型推理速度提升15倍以上,并大幅降低CPU负载。文章涵盖从环境搭建、模型转换优化到多屏异显与系统级调优的全流程,为开发者提供了将硬件算力转化为实际项目加速效果的完整指南。

oauth7security的博客 820

游戏开发-GM系统的设计

游戏管理员(gm)作为游戏中拥有更高权限的账号,在游戏开发的过程中,我们需要很早的将gm系统做出来,作为测试游戏逻辑具有不可替代的作用。 内容目录 服务端与客户端通讯基本流程 gm命令格式设计 gm系统的实现 服务端与客户端通讯基本流程 服务端与客户端通信,如果基本的网络框架搭建完成,那么我们只需要写好命令就可以了 服务器完成一条命令的添加需要3个过程。 (1)命令格式的定义

微不足道 4617

Android中RecyclerView嵌套RecyclerView或嵌套ListView

效果图: RecyclerView嵌套RecyclerView RecyclerView嵌套ListView 原理 RecyclerView嵌套RecyclerView的条目,项目中可能会经常有这样的需求,但是我们将子条目设置为RecyclerView之后,却显示不出来。自己试了很久,终于找到了原因:必须先设置子RecylcerView的高度。你要花

翟浩浩Android专栏 2万+

【crawler笔记】R语言简单动态网页爬虫(rvest包)示例

1、爬虫目标 大家普遍认为Python的爬虫功能强大,但在解决动态加载或者登陆网站时,Python存在一定困难的,相对于一些普通爬虫,使用R语言会更方便。 以https://www.thepaper.cn/为例,爬取首页的新闻(标题、内容、时间),主要采用的是动态网页中常用的httr包。 初始学习时,参考了B站《20分钟入门基于R语言的网络爬虫_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili》的视频,但代码运行出现了报错,所以在原代码上做了修改。 2、代码分析及报错修改 library(rv

seeyouer1205的博客 3275

优化嵌套的RecyclerView

优化嵌套的RecyclerView RecyclerView是ListView的更高级版本,它重用相同的视图以防止额外创建视图以提供平滑的滚动体验。RecyclerView通过保持视图池来实现这一点,该视图池包含不再可见并且可以回收的视图。 有时我们需要嵌套RecyclerView来创建一些布局。考虑在垂直方向RecyclerView内部有水平RecyclerView的情况。 在上图可以...

simplepeng的博客 4006

Framelet Transform

需要定义 Framelet 的基函数。Framelet 基函数可以是通过组合不同的小波函数生成的。# 这里可以定义 Framelet 基函数,例如一些小波基函数的线性组合# 这是一个示例函数,具体实现需要根据具体的 Framelet 设计# 示例:正弦函数。

qq_33009429的博客 1211

ubuntu20.04安装UE4+Airsim环境

版本UE4.27+Airsim1.81

玖茸的博客 3380

recyclerview嵌套,实现水平方向联合滑动

在Android中没有控件可以直接展示表格,但是有的时候又需要构建类似于表格的布局,通过RecyclerView直接嵌套实现表格,但是需要实现嵌套RecyclerView的子项实现水平方向联动滑动的效果比较麻烦,接下来看一下如何实现。在SyncHorizontalScrollRecyclerView中添加滑动监听,在OnScrollListener中进行同步滑动// 同步滚动组(所有需要联动的RecyclerView)init {

qq_51108920的博客 963

浅析ArcGis中的软件——ArcMap、ArcScene、 ArcGlobe、ArcCatalog

ArcMap:是集空间数据显示、矢量数据编辑、冲突数据检查(拓扑检查)、查询检索(地理编码)、统计(字段属性表)、报表生成、空间分析(ArcGIS Spatial Analyst)和高级制图(制图表达)等众多功能干一体的桌面应用平台软件。而且提供所见即所得的符号编辑器,令用户可以随心所欲地生成任意复杂的点、线、面符号。所支持的空间数据格式包括Arclnfo coverages、ESRI shapefiles、ArcSDE lavers、DXF、DWG、DGN、常见的图像格式、GRIDs、TINs等。

lxlmycsdnfree的博客 6565

RecyclerView嵌套RecyclerView,内层RecyclerView区域无法响应Item点击

问题描述 项目中遇到了一个RecyclerView内嵌套RecyclerView,内层RecyclerView的区域无法响应所在Item的点击事件的问题(就是点击外层不能触发所在条目的点击事件)。 解决方式(形式不同,原理相同) 方式一 viewHolder.rv.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent ev.

Android格调小窝 2239

Android Audio最全面试题及参考答案(7万字长文)

在 Android 音频系统中,应用通过框架层的 API 发出音频请求,这些请求经过音频服务层的处理,传递到 HAL 层,再由 HAL 层调用音频驱动层与硬件进行交互,最终实现音频的播放、录制等功能。在 Android 音频系统中,应用通过框架层的 API 发出音频请求,这些请求经过音频服务层的处理,传递到 HAL 层,再由 HAL 层调用音频驱动层与硬件进行交互,最终实现音频的播放、录制等功能。音频播放完成事件:当使用 MediaPlayer 等音频播放类播放音频时,音频播放完成后会触发这个事件。

大模型大数据攻城狮的专栏 2604

【华为OD机试真题】29、组成最大数 | 机试真题+思路参考+代码解析 (C++、Java、Py、C语言、JS)

题目描述 >小组中每位都有一张卡片,卡片上是6位内的正整数,将卡片连起来可以组成多种数字,计算组成的最大数字

KJ.JK 2419
上一篇: java中面向对象
下一篇: android柱状图和饼状图的简单使用(MPAndroidChart)
android_xiaogang
博客等级 码龄12年 89粉丝 142原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值