一、RecycleView

  1. <android.support.v7.widget.RecyclerView
  2. android:id="@+id/my_recycler_view"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:scrollbars="vertical"/>
三个关键要素
LayoutManager 线性布局(LinearLayoutManager) Gird布局(GridLayoutManager) 瀑布流布局(StaggeredGridLayoutManager)
Adapter RecyclerView.Adapter<T> T为继承ViewHolder的实现类
Dataset RecyclerView.ViewHolder
recyclerView的条目点击事件需要自己写接口去处理。
 
其它补充知识
recycleView有预加载机制(系统只将屏幕可见范围之内的元素保存在内存中),当第一个Item的高度占据了屏幕时,也就是屏幕内此时只有一个Item,那么在加载下一个Item时会出现卡顿现象,因为内存中不存在可利用的Item,需要去新创建一个Item,造成卡顿。
解决办法,若使用的是LinearLayoutManager,只需重写getExtraLayoutSpace()方法(将返回LayoutManager应该预留的额外空间(显示范围之外,应该额外缓存的空间))。
  1.  LinearLayoutManager linearLayoutManager =newLinearLayoutManager(this){
    @Override
    protectedint getExtraLayoutSpace(RecyclerView.State state){
    return300;
    }
    };

    具体步骤

  1. //创建默认的线性LayoutManager
  2. mLayoutManager =newLinearLayoutManager(this);
  3. //设置recycleView的方向为横向
  4. //mLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
  5. mRecyclerView.setLayoutManager(mLayoutManager);
  6. //如果可以确定每个item的高度是固定的,设置这个选项可以提高性能
  7. mRecyclerView.setHasFixedSize(true);
  8. //创建并设置Adapter
  9. adapter =new rlAdapter();
  10. mRecyclerView.setAdapter(adapter);
  11. //处理条目点击事件
      adapter.setOnItemClickListener(new rlAdapter.OnRcvItemClickListener(){
@Override
publicvoid onItemClick(View view,int position){
Toast.makeText(MainActivity.this,"当前点击的是第:"+position +"个条目",Toast.LENGTH_SHORT).show();
}
});
 staticclass rlAdapter extendsRecyclerView.Adapter<RlViewHolder>implementsView.OnClickListener{

 //定义接口,处理Item的点击事件
publicstaticinterfaceOnRcvItemClickListener{
void onItemClick(View view,int position);
}
privateOnRcvItemClickListener itemClickListener ;
publicvoid setOnItemClickListener(OnRcvItemClickListener itemClickListener){
this.itemClickListener = itemClickListener;
}
@Override
publicRlViewHolder onCreateViewHolder(ViewGroup viewGroup,int i){
View view =View.inflate(viewGroup.getContext(),R.layout.item_listview,null);
view.setOnClickListener(this);
returnnewRlViewHolder(view);
} @Override
publicvoid onBindViewHolder(RlViewHolder rlViewHolder,int position){
rlViewHolder.iv.setImageResource(arrs[position%5]);
rlViewHolder.tv.setText("测试:"+position%5);
//将数据保存到itemView中
rlViewHolder.itemView.setTag(position);
}
@Override
publicint getItemCount(){
return100;
} @Override
publicvoid onClick(View v){
if(itemClickListener !=null){
itemClickListener.onItemClick(v,(Integer) v.getTag());
}
}
} staticclassRlViewHolderextendsRecyclerView.ViewHolder{
ImageView iv;
TextView tv; publicRlViewHolder(View itemView){
super(itemView);
iv =(ImageView) itemView.findViewById(R.id.iv);
tv =(TextView) itemView.findViewById(R.id.tv);
}
}

二、CardView

CardView继承自FrameLayout类,可以包含圆角和阴影。
通过使用android:elevation属性,创建一个阴影的卡片

1、xml中使用android:cardCornerRadius属性指定圆角半径

2、代码中使用CardView.setRadius 设置圆角半径

3、使用 android:cardBackgroundColor属性设置卡片颜色

4、代码中使用CardView.setBackgroundColor设置卡片颜色,可能会影响卡片的阴影

RecycleView和CardView的更多相关文章

  1. RecycleView + CardView 控件简析

    今天使用了V7包加入的RecycleView 和 CardView,写篇简析. 先上效果图: 原理图: 这是RecycleView的工作原理: 1.LayoutManager用来处理RecycleVi ...

  2. Android RecycleView + CardView 控件简析

    今天使用了V7包加入的RecycleView 和 CardView,写篇简析. 先上效果图: 原理图: 这是RecycleView的工作原理: 1.LayoutManager用来处理RecycleVi ...

  3. Android新特性之CardView的简单使用

    Android新特性之CardView的简单使用 我们学习下Android5.0的新增加的控件CardView.首先我们了解一下CardView的基本使用,然后结合RecycleView使用CardV ...

  4. Android学习之基础知识十五 — 最佳UI体验(Material Design实战)

    一.前言 长久以来,大多数人都认为Android系统的UI并不美观,至少没有iOS系统的美观.以至于很多IT公司在进行应用界面设计的时候,为了保证双平台的统一性,强制要求Android端的界面风格必须 ...

  5. Android最佳实践之Material Design

    Material概述及主题 学习地址:http://developer.android.com/training/material/get-started.html 使用material design ...

  6. 不可错过的几款GitHub开源项目

    工作之余或者周末感觉无聊?不知道干什么?想继续提高技术,但是不知道做什么的同学,看过来,不妨利用闲暇时间来撸几个 GitHub 上还不错的开源项目,本文推荐的开源项目比较适合新手.及对MVP设计模式不 ...

  7. Android控件_RecycleView+CarView+Palette联合应用

    最终效果 表格布局 垂直布局 横向布局 添加引用 build.gradle implementation 'com.android.support:recyclerview-v7:28.0.0' im ...

  8. CardView以及RecycleView的一些问题

    下面这些属性在listview的标签里有用,在recyclerView里没用. tools:listitem="@layout/list_single_answer_item_borrowe ...

  9. RecyclerView,CardView导入和使用(Demo)

    简介: 这篇文章是ANDROID L——Material Design详解(UI控件)的一个补充或者说是应用实例,如果有时间建议大家稍微浏览一下上篇文章. 本文主要介绍Android L新增加的两个U ...

随机推荐

  1. 多源最短路Floyd 算法————matlab实现

    弗洛伊德(Floyd)算法是一种用于寻找给定的加权图中顶点间最短路径的算法.该算法名称以创始人之一.1978年图灵奖获得者.斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名. 基本思想 通过Floyd计 ...

  2. php函数的种类与调用方法大揭密

    PHP中的函数看上去很简单,实际上功能非常强大,我这里按函数名称是否固定,可以分为以下三大类: 一.名称固定的函数: 这类函数,也叫:常规函数,直接用关键字function来创建,也是大家最熟悉的类型 ...

  3. [刷题]算法竞赛入门经典(第2版) 6-4/UVa439 6-5/UVa1600

    比较忙比较累,只贴代码了. 题目:6-4 UVa439 - Knight Moves //UVa439 - Knight Moves //Accepted 0.000s //#define _XIEN ...

  4. TCP流量控制和拥塞控制

    TCP的流量控制      所谓的流量控制就是让发送方的发送速率不要太快,让接收方来得及接受.利用滑动窗口机制可以很方便的在TCP连接上实现对发送方的流量控制.TCP的窗口单位是字节,不是报文段,发送 ...

  5. linux系统管理--进程管理

    这两天一直维护公司的服务器,主要对进程管理和linux工作管理,把一些零散的知识整理一下,书归正传~ 什么进程?  以下是百度给的解释的进程,说实话,云里雾里的,其实linux进程和windows进程 ...

  6. Natas Wargame Level 12 Writeup(文件上传漏洞)

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAsQAAAChCAYAAADA86lDAAAABHNCSVQICAgIfAhkiAAAIABJREFUeF

  7. 谈一谈JDK8的函数式编程 (一)

    系列之前我想说的   最近有一段时间没写博客了,这几天回到学校,才闲下来,决定写一写最近学习到的只是,既是为了分享,也是为了巩固.之前看到过一篇调查,文章的数据是学习新知识,光是看只能获得大约5%,然 ...

  8. ionic2 使用 cordova 打包成安卓apk

    准备工作: 1.下载java sdk 配置好java 环境 2.下载android sdk 跟 android studio 并配置好环境 1.查看平台支持,添加android平台 首先命令提示符进入 ...

  9. 【.net 深呼吸】通过标准输入/输出流来完成进程间通信

    实现进程之间煲电话粥的方式,有好几种,比如,你可以用这些方案: 1.使用socket来传递.这个好像很无聊,本地进程之间也用socket?不过,通过本机回环网络确实可以进程之间通信. 2.WCF,与上 ...

  10. RGB565的理解

    一个彩色图像由R G B三个分量组成,一个RGB565的每一个像素点数据为2Byte,即16位,那么从名字上就可看出来这16位中,高5位为R分量,中间6位为G分量,低5位为B分量. 下面做了一个实验, ...