RecyclerView使用-进阶篇
布局管理器
RecyclerView提供了三种布局管理器即:
LinearLayoutManager 线性布局管理器
StaggeredGridLayoutManager 瀑布流布局管理器
GridLayoutManager 网格布局管理器
线性布局管理器
这三种布局管理器都是通过setLayoutManager方法来设置
LinearLayoutManager 还可以设置横向滚动,只需将前面MainActivity中的layoutManager加一句代码即可:
LinearLayoutManager layoutManager = new LinearLayoutManager(MainActivity.this); layoutManager.setOrientation(RecyclerView.HORIZONTAL); mRecyclerView.setLayoutManager(layoutManager);
网格布局管理器
如果让一行显示多个,可以设置 GridLayoutManager网格布局管理器来实现
GridLayoutManager layoutManager = new GridLayoutManager(MainActivity.this,3); // layoutManager.setOrientation(RecyclerView.HORIZONTAL); 也能设置横向滚动 mRecyclerView.setLayoutManager(layoutManager);
ItemDecoration
通过给 设置ItemDecoration 来装饰Item的效果,比如我们要设置间隔线
DividerItemDecoration mDivider = new DividerItemDecoration(this,DividerItemDecoration.VERTICAL); mRecyclerView.addItemDecoration(mDivider);
Item 动画
RecyclerView提供了默认的ItemAnimator实现类:DefaultItemAnimator。该类可以帮我们实现一些炫酷的动画效果
DefaultItemAnimator itemAnimator = new DefaultItemAnimator(); defaultItemAnimator.setAddDuration(1000); defaultItemAnimator.setRemoveDuration(1000); mRecyclerView.setItemAnimator(itemAnimator);
在MainActivity中添加了两个按钮, 一个添加item,一个删除item
Button button = findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { News news = new News(); news.title = "标题 新内容" ; news.content = "内容 新内容" ; mNewsList.add(1,news); mMyAdapter.notifyItemInserted(1); } }); Button button1 = findViewById(R.id.button1); button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mNewsList.remove(0); mMyAdapter.notifyItemMoved(0,1); } });
效果如下:
Item 点击
可以通过对整个Item文件的根布局添加一个点击事件来实现Item的点击
效果如下: