zoukankan      html  css  js  c++  java
  • 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 = new CellData[]{......}
    

      

  • 相关阅读:
    python课堂整理5---元组
    用python输出回文数
    python课堂整理4---列表的魔法
    python基础知识练习题一
    python课堂整理3---字符串魔法
    python课堂整理2
    python课堂整理1
    励志程序媛---从厂妹到Google年薪60W RMB程序员
    动态链接库--靠谱
    基于VS2019———C++生成自己的静态链接库————良心实战笔记
  • 原文地址:https://www.cnblogs.com/dracohan/p/5987803.html
Copyright © 2011-2022 走看看