一、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. [.NET] 《Effective C#》快速笔记 - C# 中的动态编程

    <Effective C#>快速笔记 - C# 中的动态编程 静态类型和动态类型各有所长,静态类型能够让编译器帮你找出更多的错误,因为编译器能够在编译时进行大部分的检查工作.C# 是一种静 ...

  2. linux服务器下安装node

    在百度上搜了好久,都没有完整的答案,好多都已经过时了!特留下此脚印 # 检查是否已经安装pythonrpm -qa | grep python# 查版本python# 最好是重新安装 Python推荐 ...

  3. JavaScript面向对象编程—this详解

      this详解 作者的话 在JavaScriptOPPt面向对象编程中,this这位老大哥,相信大家不会陌生.大家在遇到this时,很多朋友难免会有个疑问:"这个this是什么,它到底指向 ...

  4. Docker - 在Windows7中安装Docker

    安装docker 1 - Virtualization Support Check whether virtualization support is enabled at BIOS via HAV ...

  5. Linux下memcache的安装和启动测试

    memcache是一套分布式的高速缓存系统,MemCache的工作流程如下:先检查客户端的请求数据是否在memcached中,如有,直接把请求数据返回,不再对数据库进行任何操作:如果请求的数据不在me ...

  6. Python实现RNN

    一般的前馈神经网络中, 输出的结果只与当前输入有关与历史状态无关, 而递归神经网络(Recurrent Neural Network, RNN)神经元的历史输出参与下一次预测. 本文中我们将尝试使用R ...

  7. Redis学习-SortedSet

    Sorted-Sets和Sets类型极为相似,它们都是字符串的集合,都不允许重复的成员出现在一个Set中.它们之间的主要差别是Sorted-Sets中的每一个成员都会有一个分数(score)与之关联, ...

  8. MarkDown语法 学习笔记 效果源码对照

    MarkDown基本语法学习笔记 Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式. 下面将对Markdown的基本使用做一个介绍 目 ...

  9. Ionic集成ArcGIS JavaScript API.md

    1. Ionic同原生ArcGIS JavaScript API结合 1.1. 安装esri-loader 在工程目录下命令行安装: npm install angular2-esri-loader ...

  10. Hive load from hdfs 出错

    hive 加载HDFS的数据时出现错误, FATAL:SemanticException [Error 10028] search了一下,跟他一样Hive load from hdfs 出错. 我按照 ...