不飞则已,一飞冲天;不鸣则已,一鸣惊人。这篇文章主要讲述Android的RecyclerView相关的知识,希望能为你提供帮助。
简介
【Android的RecyclerView】RecyclerView是support-v7中用来替换ListView的组件。RecyclerView 小组件比 ListView 更高级且更具灵活性。 此小组件是一个用于显示庞大数据集的容器,可通过保持有限数量的视图进行非常有效的滚动操作。 如果您有数据集合,其中的元素将因用户操作或网络事件而发生改变,请使用 RecyclerView 小组件。
使用方法
- 如果要使用RecyclerView,首先要添加support-v7的支持。
- 打开Project Structure选项,在Dependencies添加RecyclerView-v7库,之后就可以在程序中使用RecyclerView:
public class MainActivity extends Activity {private RecyclerView rv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); rv = new RecyclerView(this); setContentView(rv); ...
- 设置RecyclerView的布局:
rv.setLayoutManager(new LinearLayoutManager(this));
RecyclerView 提供这些内置布局管理器:
-
- LinearLayoutManager 以垂直或水平滚动列表方式显示项目。
- GridLayoutManager 在网格中显示项目。
- StaggeredGridLayoutManager 在分散对齐网格中显示项目。
//rv.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)); //rv.setLayoutManager(new GridLayoutManager(this, 2)); //rv.setLayoutManager(new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL));
- 接着要给RecyclerView添加Adapter,这个Adapter也需要自定义。在这个Adapter中需要定义一个类,继承自RecyclerView.ViewHolder:
class ViewHolder extends RecyclerView.ViewHolder { private View root; private TextView tvTitle, tvContent; public ViewHolder(View root) { super(root); tvTitle = (TextView) root.findViewById(R.id.tvTitle); tvContent = (TextView) root.findViewById(R.id.tvContent); }public TextView getTvContent() { return tvContent; }public TextView getTvTitle() { return tvTitle; } }
- 并作为onCreateViewHolder的返回值,这个函数表示每一项的View:
@Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.list_cell, null)); }
- 接下来重写onBindViewHolder, 这个函数用来RecylerView显示每一项的内容的时候调用。
@Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { ViewHolder vh = (ViewHolder) holder; CellData cd = data[position]; vh.getTvTitle().setText(cd.title); vh.getTvContent().setText(cd.content); }
- 并提供这个数组,就可以显示了:
private CellData[] data = https://www.songbingjia.com/android/new CellData[]{......}
推荐阅读
- 学习笔记Android常用布局
- Android TV开发总结TV上屏幕适配总结
- Android-实现底部弹出PopupWindow并让背景逐渐变暗
- Android自定义竖直方向SeekBar
- Android 手机卫士16--手机杀毒
- Android 音乐播放
- iOS内存管理(引用计数、Runloop、AutoreleasePool和引用循环)
- 内存管理之(__bridge、__bridge_transfer、__bridge_retained)
- GUI编程基本原理之(event loop和run loop(运行循环))