前言
RecyclerView在Android当中也是相当重要的,RecylerView是support-v7包中的新组件,是一个强大的滑动组件,它可以很好替代ListView、GridView,并且实现比他们更加强大的功能,这里我们先从最基础的开始,慢慢带领大家进行深入。
初步使用RecyclerView
1、添加所需要的依赖
implementation 'com.android.support:recyclerview-v7:28.0.0'
或
compile 'com.android.support:recyclerview-v7:26.0.0'
接下来就是在布局中使用
<android.support.v7.widget.RecyclerView
android:id="@+id/recycleview"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
2、三种布局方式
纵向布局(默认)、横向布局、表格布局、瀑布流
纵向布局: mRecyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
横向布局:mRecyclerView.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,false));
表格布局:mRecyclerView.setLayoutManager(new GridLayoutManager(this, 3));
瀑布流:mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));
总结:
纵向布局、横向布局、网格布局的item可以说相差微乎其微,关键区别在于setLayoutManager()的
3、设置分割线 默认分割线、自定义分割线
这里大家可以根据横向、纵向通过DividerItemDecoration.VERTICAL、DividerItemDecoration.HORIZONTAL来进行更换
默认分割线:mRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));
自定义分割线:mRecyclerView.addItemDecoration(new SpaceItemDecoation(3));
这里是自定义的分割线
class SpaceItemDecoation extends RecyclerView.ItemDecoration {
private int space;
public SpaceItemDecoation(int space) {
this.space = space;
}
@Override
public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
super.getItemOffsets(outRect, view, parent, state);
//如果不是第一个盒子设置一个居左和居下的边距
outRect.left = space;
outRect.bottom = space;
//大部分的需求都是3个 因为第一个都是你设置个数的倍数,所以通过取余来将左边距设置为0
if (parent.getChildLayoutPosition(view) % 3 == 0) {
outRect.left = 0;
}
}
}
4、添加、删除时动画
mRecyclerView.setItemAnimator(new DefaultItemAnimator());
在项目中的简单实用
1、拿到控件Id
RecyclerView mRecyclerView = (RecyclerView) findViewById(R.id.recycleview);
2、设置布局管理器
//设置纵向默认排列
mRecyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
//设置横向排列
mRecyclerView.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,false));
//设置表格布局排列
mRecyclerView.setLayoutManager(new GridLayoutManager(this, 3));
//设置瀑布流显示
mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));
3、设置分割线
mRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));
4、设置删除时动画
mRecyclerView.setItemAnimator(new DefaultItemAnimator());
5、关联适配器
RecyclerViewAdapter recyclerViewAdapter = new RecyclerViewAdapter(getData(), this);
mRecyclerView.setAdapter(recyclerViewAdapter);
6、适配器
class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private List<String> mList;
private Context mContext;
public RecyclerViewAdapter(List<String> mList, Context mContext) {
//大部分只有数据与上下文
this.mList = mList;
this.mContext = mContext;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
/**
* 主要负责把加载子项的布局
* 将xml定义的布局实例化为view对象
*/
View view = LayoutInflater.from(mContext).inflate(R.layout.recyclerview_item, viewGroup, false);
return new ContentViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
//主要负责绑定数据
((ContentViewHolder) holder).tvItem.setText(mList.get(position));
}
@Override
public int getItemCount() {
//返回集合的数量
return mList.size();
}
class ContentViewHolder extends RecyclerView.ViewHolder {
private final TextView tvItem;
private final LinearLayout llLayout;
public ContentViewHolder(@NonNull View itemView) {
super(itemView);
tvItem = (TextView) itemView.findViewById(R.id.tv_item);
llLayout = (LinearLayout) itemView.findViewById(R.id.ll_layout);
}
}
}
最后
到此RecyclerView入门篇就到此结束,相信大家都对RecyclerView有了大体的认识,希望大家可以多多练习,融入自己的项目中,进行实践。
文末福利
如果想要成为架构师或想突破20~30K薪资范畴,那就不要局限在编码,业务,要会选型、扩展,提升编程思维。此外,良好的职业规划也很重要,学习的习惯很重要,但是最重要的还是要能持之以恒,任何不能坚持落实的计划都是空谈。
如果你没有方向,这里给大家分享一套由阿里高级架构师编写的《Android八大模块进阶笔记》,帮大家将杂乱、零散、碎片化的知识进行体系化的整理,让大家系统而高效地掌握Android开发的各个知识点。
相对于我们平时看的碎片化内容,这份笔记的知识点更系统化,更容易理解和记忆,是严格按照知识体系编排的。
全套视频资料:
一、面试合集
二、源码解析合集
三、开源框架合集
欢迎大家一键三连支持,若需要文中资料,直接扫描文末CSDN官方认证微信卡片免费领取↓↓↓