RecycleView和CardView笔记(一)
来源:互联网 发布:旅游网站毕业设计源码 编辑:程序博客网 时间:2024/05/17 01:39
RecycleView和CardView笔记(一)
- Recycle和CardView是supportV7包中的组件,也是体现MaterialDesign风格的一组UI组件,这一节我先来讲讲它们的具体用法,先放出一张效果截图:
RecycleView的简单用法:
1. 如果使用的是AndroidStudio的话,需向build.gradle(注意是app文件夹下的)添加依赖项:
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.1.1' compile 'com.android.support:cardview-v7:23.1.1' compile 'com.android.support:recyclerview-v7:23.1.1' }**
2. 创建布局:
RecycleView的布局文件主要有两个: 其一是RecycleView的layout,一个是其中某一项(item)的layout(类似ListView).关于布 局没有什么好说的,记住RecycleView和CardView要使用全包名就好了:
<LinearLayout xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/recycle" tools:context=".MainActivity" > </android.support.v7.widget.RecyclerView></LinearLayout>
3. 创建适配器
创建适配器最少需要实现三个方法:
(1).public abstract VH onCreateViewHolder (ViewGroup parent, int viewType) (VH是你的静态 ViewHolder类)
当RecycleView需要ViewHolder去展示每一个item时,该方法被调用
@Overridepublic CatsViewHolder onCreateViewHolder(ViewGroup viewGroup,int viewType){View v= LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item,viewGroup,false);CatsViewHolder mHolder = new CatsViewHolder(v);return mHolder;}
(2). public abstract void onBindViewHolder (VH holder, int position)当RecycleView需要向每一项填充数据时,该方法被调用.
@Override public void onBindViewHolder(CatsViewHolder viewHolder,int i){ Log.e("RVAdapter","<---onBindViewHolder is called--->"); viewHolder.imageView.setImageResource(mCat.get(i).photoId); viewHolder.textView.setText(mCat.get(i).descrip); }
(3). public abstract int getItemCount (), 返回adapter所有的item数目.
@Override public int getItemCount(){ return mCat.size(); }
4. 使用布局管理器:
(1).RecycleView内置三种布局管理器:
LinearLayoutManager : 以垂直或水平滚动列表方式显示项目。
GridLayoutManager: 在网格中显示项目。
StaggeredLayoutManager: 在分散对齐网格中显示项目。
(2).布局管理器的作用:
布局管理器将确定 RecycleView内各项目视图的位置并决定何时重新使用用户已不可见的项目视图。 如果要重新使用(或重复使用)一个视图,布局管理器可能会要求适配器以数据集中的另一个元素替换视图的内容。 以此方式重复使用视图将可避免创建不必要的视图或执行成本高昂的findViewById() 查找,从而改善性能。
代码如下:
public class MainActivity extends AppCompatActivity { ArrayList<Cat> Cats; //Cat类的集合 RecyclerView rv = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initialCats(); //初始化一个Adapter RVAdapter mAdapter = new RVAdapter(Cats); //初始化一个LinearLayoutManager LinearLayoutManager linear = new LinearLayoutManager(this); linear.setOrientation(LinearLayoutManager.VERTICAL); //设置LinearLayout的方向为垂直 rv = (RecyclerView)findViewById(R.id.recycle); //设置为true,RecycleView就有了固定的尺寸,有助于优化 rv.setHasFixedSize(true); rv.setLayoutManager(linear); rv.setAdapter(mAdapter); }private void initialCats(){ Cats = new ArrayList<>(); Cats.add(new Cat("一只白色的猫", R.drawable.white_cat)); Cats.add(new Cat("一只可爱的猫", R.drawable.cute_cat)); Cats.add(new Cat("一只大脸的猫", R.drawable.big_cat)); Cats.add(new Cat("一只悲伤的猫", R.drawable.a_sad_cat)); }}
CardView的用法
- 布局 (CardView的布局是嵌入RecycleView的item的布局中的):
<?xml version="1.0" encoding="utf-8"?><android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:cardview="http://schemas.android.com/tools" android:id="@+id/card_view" android:layout_width="fill_parent" android:layout_height="200dp" android:layout_gravity="center_horizontal" cardview:cardElevation="4dp" cardview:cardCornerRadius="5dp"> <LinearLayout android:layout_width="fill_parent" android:layout_height="240dp" android:orientation="vertical" android:padding="8dp"> <ImageView android:layout_width="match_parent" android:layout_height="130dp" android:id="@+id/imageView" android:scaleType="centerCrop" android:contentDescription="@string/app_name" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="#333333" android:id="@+id/textView" android:layout_gravity="center_horizontal" android:layout_marginLeft="5dp" android:layout_marginStart="5dp" android:textSize="30sp" /> </LinearLayout> </android.support.v7.widget.CardView>
2.比较的重要属性:
cardview:cardElevation : 创建阴影,关于阴影请阅读Android官方文档关于的MaterialDesign的说明.
cardview:cardCornerRadius: 设置圆角半径
card_view:cardBackgroundColor: 设置卡片北京颜色.
小结
此次我们讨论了RecycleView&CardView的简单用法,当然这还远远不够,后续我们将一起学习如何在RecycleView中显示不同的View,以及如何为RecycleVIew加Header和Bottom,删除item,还有LayoutManager的运作机制.
这是我第一次用markdown记笔记,可能还有所欠缺.
有部分内容应用自官方文档.
全部代码在此 http://download.csdn.net/detail/u012946230/9409060
- RecycleView和CardView笔记(一)
- Android 使用RecycleView和CardView
- Android之RecycleView和CardView
- 5.0 recycleview 和cardview基本使用
- Recycleview 多布局添加和cardview使用
- RecycleView和CardView的简单介绍和用法
- Android recycleview+cardview
- 使用cardview和recycleview时碰到的一些问题
- Android 5.0+(RecycleView、CardView、Palette)
- 瀑布流效果RecycleView+CardView
- Android recycleview和cardview结合使用出现的边角阴影问题
- RecycleView的基本配置和使用方法(一)---初识RecycleView
- eclipse 上使用recycleview,cardview的办法
- RecycleView(一)
- 使用RecycleView和SearchView总结(一)
- Android Training学习笔记——RecyclerView和CardView
- Android学习笔记二十九之SwipeRefreshLayout、RecyclerView和CardView
- Android学习笔记二十九之SwipeRefreshLayout、RecyclerView和CardView
- java异常学习笔记
- spring mvc使用Maven配置Velocity
- xe8End使用过程中的一些问题
- Android Studio快捷键
- 只要一句话!高铁动车上就可以买到15块钱盒饭
- RecycleView和CardView笔记(一)
- java的多个excel打包成zip下载
- cocos2dx 常见的49中动作详解
- android代码测试界面 ( ActivityInstrumentationTestCase2 )
- LightOj 1188 树状数组
- H5页面设计
- 数据结构_8:查找:二叉排序树
- UVA 19889 组合数学
- EidtText