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好像也就那样,不就是对ListView和GrideView的结合吗,可是通过我的继续学习感觉这个组件是非常强大的。
为什么叫RecyclerView(RecyclerView的特性 )
不关心Item是否显示在正确位置,如何显示(LayoutManager可控制)
不关心Item之间分割多少(ItemDecoration可控制)
不关心Item之间增加与删除的动画效果(ItemAnimator可控制)
关注如何去回收和复用View

RecyclerView相关的重要类

  • Adapter
  • ViewHolder
  • LayoutManager 显示风格
  • ItemDecoration 显示风格的效果
  • ItemAnimator 内部Item的动画效果

RecyclerView能干什么

  • 纵/横 ListView
  • 纵/横GrideView
  • 瀑布流
  • 定制Item增加与删除的动画

下面来实现相应的代码
在使用RecyclerView之前要导入相应的jar包(根据不同的版本号去导入)

 compile 'com.android.support:recyclerview-v7:24.0.+'

RecyclerView的包导入之后就可以使用了~

实现纵向ListView

创建xml布局

<android.support.v7.widget.RecyclerView
        android:id="@+id/main_recycler_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

在Activity中声明RecyclerView

recyclerView = (RecyclerView) findViewById(R.id.main_recycler_view);

设置需要显示的数据

 private void initList() {
        dataList=new ArrayList<>();
        for(int i='A';i<='z';i++){
            dataList.add(i+"");
        }
    }

这样会显示从A到小z所有的字母

创建适配器
这个可是比较关键的好几步,有点像对BaseAdapter的使用

1.创建每个Item的布局
2.新建类MyAdapter继承RecyclerView.Adapter 实现三个抽象方法
3.创建ViewHolder,继承RecyclerView.ViewHolder,实现构造方法
4.在抽象方法中将ViewHolder进行创建和绑定

1.首先来看我创建的Item布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="60dp"
    android:background="#FF7F50"
    >
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/item_tv"
        android:gravity="center"
        />

</LinearLayout>

2.通过这个布局中的控件创建ViewHolder

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

在ViewHolder中将Item中的控件实例化

3.实现Adapter的构造方法

//实现构造方法
    private LayoutInflater inflater;
    private Context context;
    private List<String> list;

    public MyAdapter(Context context, List<String> list) {
        this.context = context;
        this.list = list;
        inflater=LayoutInflater.from(context);
    }

4.在Adapter的三个构造方法中将ViewHolder创建,且绑定(数据)

//创建 ViewHolder
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        //传入的参数为Item的一个布局
        View view =inflater.inflate(R.layout.activity_item,parent,false);
        MyViewHolder myViewHolder=new MyViewHolder(view);
        return myViewHolder;
    }
    //绑定ViewHolder
    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        ((MyViewHolder)holder).textView.setText(list.get(position));
    }
    @Override
    public int getItemCount() {
        return list.size();
    }

绑定适配器,创建 layoutManager

//LinearLayoutManager.VERTICAL垂直样式的ListView
LinearLayoutManager layoutManager = new LinearLayoutManager(this,
                LinearLayoutManager.VERTICAL, false);
recyclerView.setAdapter(new MyAdapter(MainActivity.this,dataList));
 //设置成ListView的样式
        recyclerView.setLayoutManager(layoutManager);

最后结果

这里写图片描述

这样显示是一个ListView的样式,但是没有分界线(我在最上方加了一个toolbar)
下面就添加分界线
toolBar 怎么使用这里就不在做具体的介绍了

添加Item之间的分界线
网上有很多别人实现的分界线,我们直接可以copy过来使用,并且进行了更改,这一点呢有个大神的博客解释的比较好,我直接copy过来吧,在上面呢我进行了改动,将分界线的颜色设置成彩色
首先是分界线源码

package my.xbl.com.recyclerviewdemo;

/*
 * Copyright (C) 2014 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;

/**
 * This class is from the v7 samples of the Android SDK. It's not by me!
 * <p/>
 * See the license above for details.
 */
public class DividerItemDecoration extends RecyclerView.ItemDecoration
{

    private static final int[] ATTRS = new int[] { android.R.attr.listDivider };

    public static final int HORIZONTAL_LIST = LinearLayoutManager.HORIZONTAL;

    public static final int VERTICAL_LIST = LinearLayoutManager.VERTICAL;



    private Drawable mDivider;

    private int mOrientation;

    public DividerItemDecoration(Context context, int orientation)
    {
        final TypedArray a = context.obtainStyledAttributes(ATTRS);
        mDivider = a.getDrawable(0);
        a.recycle();
        setOrientation(orientation);
    }

    public void setOrientation(int orientation)
    {
        if (orientation != HORIZONTAL_LIST && orientation != VERTICAL_LIST)
        {
            throw new IllegalArgumentException("invalid orientation");
        }
        mOrientation = orientation;
    }

    @Override
    public void onDraw(Canvas c, RecyclerView parent)
    {
         if (mOrientation == VERTICAL_LIST) {
                drawVertical(c, parent);
            } else {
                drawHorizontal(c, parent);
            }
    }

    public void drawVertical(Canvas c, RecyclerView parent)
    {
        final int left = parent.getPaddingLeft();
        final int right = parent.getWidth() - parent.getPaddingRight();

        final int childCount = parent.getChildCount();

        for (int i = 0; i < childCount; i++)
        {
            final View child = parent.getChildAt(i);
            RecyclerView v = new RecyclerView(
                    parent.getContext());
            final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child
                    .getLayoutParams();
            final int top = child.getBottom() + params.bottomMargin;
            final int bottom = top + mDivider.getIntrinsicHeight();
            mDivider.setBounds(left, top, right, bottom);
            mDivider.draw(c);
        }
    }

    public void drawHorizontal(Canvas c, RecyclerView parent)
    {
        final int top = parent.getPaddingTop();
        final int bottom = parent.getHeight() - parent.getPaddingBottom();

        final int childCount = parent.getChildCount();
        for (int i = 0; i < childCount; i++)
        {
            final View child = parent.getChildAt(i);
            final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child
                    .getLayoutParams();
            final int left = child.getRight() + params.rightMargin;
            final int right = left + mDivider.getIntrinsicHeight();
            mDivider.setBounds(left, top, right, bottom);
            mDivider.draw(c);
        }
    }

    @Override
    public void getItemOffsets(Rect outRect, int itemPosition,
            RecyclerView parent)
    {
        if (mOrientation == VERTICAL_LIST)
        {
            outRect.set(0, 0, 0, mDivider.getIntrinsicHeight());
        } else
        {
            outRect.set(0, 0, mDivider.getIntrinsicWidth(), 0);
        }
    }
}

其次是我改动得地方将它的样式设置成彩色

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <size android:height="4dp"/>
    <gradient
        android:centerColor="#ff00ff00"
        android:endColor="#ff0000ff"
        android:startColor="#ffff0000"
        android:type="linear"/>
</shape>

最后在样式(style中)中引用次样式

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:listDivider">@drawable/divider_02</item>

    </style>

下面在来看一下GrideView的样式效果实现

这里写图片描述

将纵向ListView转换成GridView

对于RecyclerView来说由ListView切换到GridView是非常简单的,而且从纵向的ListView切换到横向的ListView也是非常简单的

纵向ListView

 LinearLayoutManager layoutManager = new LinearLayoutManager(MainActivity.this,
                                LinearLayoutManager.VERTICAL, false);
                        recyclerView.setLayoutManager(layoutManager);

横向ListView

LinearLayoutManager layoutManager_hor = new LinearLayoutManager(MainActivity.this,
                                LinearLayoutManager.HORIZONTAL, false);
                        recyclerView.setLayoutManager(layoutManager_hor);

纵向GridView

//当前Activity,多少列
recyclerView.setLayoutManager(new GridLayoutManager(MainActivity.this,3));

横向GridView

recyclerView.setLayoutManager(new StaggeredGridLayoutManager(5,                    StaggeredGridLayoutManager.HORIZONTAL));

设置横向GridView的时候用到了StaggeredGridLayoutManager 下面会讲到这个的具体使用
在这里呢我把下划线的样式去掉,为Item增加了属性

android:layout_margin="3dp"

为TextView设置了宽度属性

 <TextView
        android:padding="20dp"
        android:layout_width="72dp"
        android:layout_height="match_parent"
        android:id="@+id/item_tv"
        android:text="A"
        android:layout_gravity="center"
        />

最后显示效果(其中一个)
这里写图片描述

最后就是瀑布流效果了,先看最终实现效果
效果有些些的丑

这里写图片描述
这个瀑布流呢它的TextView的高度是不断地变化的,所以要重新写一个Adapter去实现高度变化的效果

package my.xbl.com.recyclerviewdemo;

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

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

/**
 * Created by April on 2017/5/30.
 * 这个Adapter可以强制性的让使用者使用ViewHolder
 */

public class StaggerAdapter extends RecyclerView.Adapter {
    //实现构造方法
    private LayoutInflater inflater;
    private Context context;
    private List<String> list;
    //用随机数模拟高度的变化
    private List<Integer>heightList;

    public StaggerAdapter(Context context, List<String> list) {
        this.context = context;
        this.list = list;
        heightList=new ArrayList<>();
        inflater=LayoutInflater.from(context);
        //将随机产生的itemView的高度放置到一个List中
        for (int i=0;i<list.size();i++){
            heightList.add((int)(100+Math.random()*300));
        }
    }
    //创建 ViewHolder
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        //传入的参数为Item的一个布局
        View view =inflater.inflate(R.layout.activity_item,parent,false);
        MyViewHolder myViewHolder=new MyViewHolder(view);
        return myViewHolder;
    }
    //绑定ViewHolder
    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
    //一般这个方法用于添加数据,现在我们将为itemView高度的设计也放到这个方法中
        ViewGroup.LayoutParams lp= ((MyViewHolder)holder).itemView.getLayoutParams();
        lp.height=heightList.get(position);
        ((MyViewHolder)holder).itemView.setLayoutParams(lp);
        ((MyViewHolder)holder).textView.setText(list.get(position));
    }
    @Override
    public int getItemCount() {
        return list.size();
    }
    private class MyViewHolder extends RecyclerView.ViewHolder{
        TextView textView;
        public MyViewHolder(View itemView) {
            super(itemView);
            textView= (TextView) itemView.findViewById(R.id.item_tv);
        }
    }
}

然后就是为RecyclerBView 添加LayoutManager

recyclerView.setAdapter(new StaggerAdapter(StaggerActivity.this,dataList));
recyclerView.setLayoutManager(new StaggeredGridLayoutManager(3,
                StaggeredGridLayoutManager.VERTICAL));

带有动画效果的增加/减少元素

这里写图片描述

为RecyclerView添加一个系统默认动画

recyclerView.setItemAnimator(new DefaultItemAnimator());

对数据的增加逻辑
在自定义的Adapter中实现对list数据的增加,并刷新Item

//增加数据的方法
    public void addData(int pos) {
        list.add(pos, "Insert");
        //刷新布局,不是调用的notifyDataSetChanged();
        notifyItemInserted(pos);
    }

对数据的减少逻辑
在自定义Adapter中实现对list数据的移除和对 Item的刷新

//删除数据的方法
    public void deleteData(int pos) {
        list.remove(pos);
        //刷新布局,不是调用的notifyDataSetChanged();
        notifyItemRemoved(pos);
    }

两个notify的方法是不一样的
最后在Activity中直接调用这两个方法

myAdapter.addData(1);
myAdapter.deleteData(1);

总结:这样的话对RecyclerView显示的效果就实现了,下一篇会讲解如何对RecyclerView中的Item实现点击事件

Android——RecyclerView使用汇总 前言 众所周知,RecyclerView是一个功能强大的,用于替代ListView的控件。话虽如此,我在项目中的大多数情况下仍只是将其当做一个加强版的ListView使用,很少有深入使用其高级的功能,不过随着需求的增加,深入学习RecyclerView的高级功能也是必不可少的,因此,谨以此文记录我所见所闻的RecyclerView,方便日后复习查阅。 基础 基础使用 RecyclerView可以说是开发中的常客,相信大部分开发者都能轻松地完成基本使用下的代码,甚至由于经常使用而形成了肌肉记忆,实际上Recy 阅读详情

相关推荐

理解RecyclerView(五)—RecyclerView的绘制流程

前言:做人如果没有梦想,那和咸鱼有什么区别。        ——《少林足球》 一、概述   上一篇文章对RecyclerView中实现了如何高度自定义点击事件、万能ViewHolder、万能适配器的封装和使用。最开始就提到,RecyclerView支持各种各样的布局效果,其核心关键在于RecyclerView.LayoutManager中,使用时我们是需要setLayoutManager()设置布局管理器的。RecyclerView已经将一部分功能抽离出来,在布局管理器中另外处理,也方便开发者自行拓展。

https://juejin.cn/user/1654096907477549/posts 2456

Android—RecyclerView相关内容

Recycleview四级缓存 mAttachedScrap(屏幕内),用于屏幕内itemview快速重用,不需要重新createView和bindView mCacheViews(屏幕外),保存最近移出屏幕的ViewHolder,包含数据和position信息,复用时必须是相同位置的ViewHolder才能复用,应用场景在那些需要来回滑动的列表中,当往回滑动时,能直接复用ViewHolder数据,不需要重新bindView。 mViewCacheExtension(自定义缓存),不直接使用,需要用户

#请假条的博客 344

如何使用RecyclerView

RecyclerView 总结

whale_kyle的博客 2733

【Android基础】RecyclerView

ListView只能实现数据纵向滚动的效果,如果想实现横向滚动的话,ListView是做不到的。为此,Android提供了一个更强大的滚动控件——RecyclerView。它可以说是一个增强版的ListView。 RecyclerView提供了三种布局方式:LinearLayoutManager(线性布局)、GridLayoutManager(网格布局)和StaggeredGridLayoutManager(瀑布流布局)。 一、RecyclerView的基本用法(LinearLayoutManager) 1

m0_46211029的博客 513

UR机械臂正逆运动学解析:从DH参数到8组解的完整求解策略

本文深入解析UR机械臂的正逆运动学求解策略,从DH参数原理到完整的8组解求解方法。详细介绍了正运动学的坐标变换过程,以及逆运动学中Atan2函数和三角恒等变换的应用,并揭示了8组解的产生机制。通过实际案例和调试技巧,帮助工程师掌握UR机械臂运动学求解的核心技术。

weixin_29094775的博客 413

使用Hyper-V使用下载下来的macOS安装引导安装macos

然后关闭工具返回安装界面选择第二个reinstall,选择119g那个硬盘。我的资源上传了:macOS Monterey on Hyper-V.7z。设置固件的启动顺序,引导安装盘放到第一位,mac安装110g放第二。选择disk utility格式化那个110g。下载解压的macos引导挂载到虚拟硬盘。其他设置安全禁用,检查禁用,集成都选中。新建一个虚拟硬盘装mac,110g。

viviliving的专栏 3023

RecyclerView (二) ItemDecoration 详解

RecyclerView 已经推出了n年了,日常开发中也已经彻底从 ListView 迁移到了 RecyclerView,但前两天有人在一个安卓群里面问了个关于最顶上的 item view 加蒙层的问题,被人用 ItemDecoration 完美解决。此时我发现自己对 RecyclerView 的使用一直太过基本,更深入更强大的功能完全没有涉及,像 ItemDecoration, ItemAnim...

深耕技术 1234

JSSIP实战:5分钟搞定WebRTC电话功能(附完整代码示例)

本文通过JSSIP库实战演示如何在Web应用中快速集成WebRTC电话功能。文章提供了从环境准备、SIP服务器连接到完整代码示例的详细步骤,涵盖用户注册、拨号接听、媒体流处理等核心环节,并针对常见问题给出排查方案,帮助开发者高效实现网页端实时语音通信。

u8v9w0x1y的博客 517

android getitem,【Android进阶】RecyclerView之ItemDecoration(一)

前言RecyclerView 对大家来说,基本使用应该已经比较熟悉,这里就直接跳过,说说ItemDecoration,也算是温故而知新。什么是ItemDecoration从字面意思来说,就是装饰,装饰RecyclerView 。这个怎么理解?举几个例子就明白了。比如说,RecyclerView 如果要加间隔线应该如何做?这里就要用到ItemDecorationDividerItemDecorati...

weixin_39608134的博客 352

古风仙侠少女三视图提示词,一键生成角色设定

3D中国写实CG风格,CG渲染质感,精细3D建模,PBR物理材质,细腻服装纹理,电影级灯光,丰富表情,高精度场景,次世代引擎画质。平视正交视角,统一光照,纯白背景,无文字无水印,避免强透视和动态变形。3D中国写实CG风格,CG渲染质感,精细3D建模,PBR物理材质,细腻服装纹理,电影级灯光,丰富表情,高精度场景,次世代引擎画质。3D中国写实CG风格,CG渲染质感,精细3D建模,PBR物理材质,细腻服装纹理,电影级灯光,丰富表情,高精度场景,次世代引擎画质。少女,古风仙侠少女气质,灵动、温婉、仙气。

欢迎来到鸾姝淡月博客,专为程序员和编程爱好者打造的技术博客。我们分享编程语言趋势、开发工具、编程哲学、职业发展等,助你掌握新技术,优化技能,激发编程热情。 1040

【AI Guide】AI面试攻略只用看这一篇就够了!力争做全网最全的AI面试攻略——大模型(五)Adapter 微调

Adapter 微调(Adapter Fine-tuning)是一种高效的参数高效微调(PEFT)方法。相较于全参数微调(Full Fine-tuning),Adapter 在预训练模型的特定层插入轻量级的可训练模块,而冻结原始模型参数,从而减少计算和存储开销。是缩放因子,控制 Adapter 输出的影响程度。设 Transformer 层的隐藏状态为。为 Adapter 层的可训练参数,为非线性激活函数,如 ReLU。为冻结的预训练模型参数,

AI科研社 183

ItemDecoration解析(一) getItemOffsets

介绍 An ItemDecoration allows the application to add a special drawing and layout offset to specific item views from the adapter's data set. This can be useful for drawing dividers between items, hig

Data的博客 5043

14、多标签分类与卷积神经网络在医学图像处理中的应用

本文探讨了多标签分类与卷积神经网络(CNN)在医学图像处理中的应用。文章详细介绍了多标签分类的概念和挑战,以及如何通过CNN进行高效、准确的分类任务。内容涵盖模型设计、损失函数选择、数据增强技术、类别权重调整等关键技术点,并结合实际案例,如白内障手术工具检测、视网膜血管分割等,展示了CNN在医学图像分析中的强大潜力。此外,还讨论了模型优化策略及面临的挑战与解决方案。

t8u9v0的博客 191

Android学习之RecyclerView的使用

        RecyclerView是Android 5.0推出的,是support-v7包中的新组件,它被用来代替ListView和GridView,并且能够实现瀑布流的布局,更加高级并且更加灵活,提供更为高效的回收复用机制,同时实现管理与视图的解耦合。 官方文档解释: A flexible view for p...

明昕ztoy的博客 6万+

【学习系列】SAP RAP 8:行为定义-Authorization Control

本文介绍了SAP RAP中的授权控制实现方法,主要分为读取操作和修改操作两种场景。读取操作通过ABAP CDS的数据控制语言(DCL)实现,使用访问控制对象限制数据可见范围;修改操作则通过行为定义中的权限检查,包括全局授权、实例授权和预检查三种方式。文章详细说明了如何使用DCL创建访问控制规则,并通过实例演示了全局授权和实例授权的代码实现方法,以及预检查功能在数据更新前的权限验证。这些授权控制机制共同确保用户只能访问和操作其权限范围内的数据,有效保障系统安全性。

DeveloperMrMeng的博客 433

商用车重型多挡位机械式变速器(AMT)结构设计与仿真分析

本文针对商用车重型AMT变速器开展结构设计与仿真分析。设计采用12挡双中间轴结构,匹配400kW柴油发动机,最大扭矩2000Nm。通过等比级数分配传动比(头挡14.5,最高挡0.78),采用主副箱组合实现多挡位。双中间轴结构可抵消径向力,提升承载能力。关键设计包括:235mm中心距、4.5-5.0mm齿轮模数、锁环式同步器和复合润滑系统。通过Python参数化建模进行强度校核,计算显示中间轴在2000Nm工况下等效应力满足安全系数要求(屈服强度850MPa,安全系数≥2)。该设计解决了传统MT变速器操作强度

AI的内部世界的博客 113

RecyclerView如何嵌套RecyclerView

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

Jonly_W的博客 2845

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

RecyclerView(二)—— RecyclerView的使用

RecyclerView ListView由于强大的功能,在过去的Android开发当中可以说是贡献卓越,直到今天仍然还有不计其数的程序在使用ListView。不过ListView并不是完美无缺的,比如如果不使用一些技巧来提升它的运行效率,那么ListView的性能就会非常差。还有,ListView的扩展性也不够好, 它只能实现数据纵向滚动的效果,如果我们想实现横向滚动的话,ListView是做不到的。 为此,Android提供了一个更强大的滚动控件——RecyclerView。它可以说是一个增强版的Lis

xingyu19911016的博客 1938

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Recyclerview 嵌套Recyclerview

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

凯文欧巴的IT全攻略 635

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Android中RecyclerView嵌套RecyclerView

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

Vaccae的博客 1696

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

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

Android格调小窝 2239

RecyclerView的基本使用

RecyclerView是Android一个更强大的控件,其不仅可以实现和ListView同样的效果,还有优化了ListView中的各种不足。其可以实现数据纵向滚动,也可以实现横向滚动(ListView做不到横向滚动)。接下来讲解RecyclerView的用法。 RecyclerView 基本用法 因为RecyclerView属于新增的控件,Android将RecyclerView定义在support库里。若要使用RecyclerView,第一步是要在build.gradle中添加对应的依赖库。 添加Rec

nishuoniaiwoma的博客 4431

RecyclerView系列 - RecyclerView的基本使用

前言 RecyclerView 在本文发布之前,已经出来很久了,之前也有很多关于 RecyclerView 的优秀文章,那我为什么还要在这里写下本文呢,实不相瞒,我是 ListView 的忠实粉,之前很少使用到 RecyclerView,最近发现了不少关于 RecyclerView 的优秀框架,于是开始使用 RecyclerView,在使用第三方优秀框架的同时,也需要了解框架背后对组件进行的处理及...

一个IT人的技术成长历程。 4218

RecyclerView基本使用

RecyclerView是android 5.0推出的新的控件,官方给出的说明是: RecyclerView is a more advanced and flexible version of ListView. This widget is a container for large sets of views that can be recycled and scrolled ve

大写的Z 2503

RecyclerView的canScrollVertically

前几日在某机型上线上出现了一个与RecyclerView上划下滑相关的BUG。 源码解读 看了会儿RecyclerView的canScrollVertically(int direction)函数: /** * Check if this view can be scrolled vertically in a certain direction. * * ...

袋鼠 3346
上一篇: DrawerLayout的使用
下一篇: RecyclerView的点击
许菠萝
博客等级 码龄10年 263粉丝 77原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值