zoukankan      html  css  js  c++  java
  • 将替代ListView的RecyclerView 的使用(一)

    版权声明:本文为博主原创文章,未经博主同意不得转载。 https://blog.csdn.net/by317966834/article/details/36205923

    RecyclerView 是 android-support-v7-21 版本号中新增的一个 Widgets, 另一个 CardView 会在下次介绍使用。官方介绍 RecyclerView 是 ListView 的升级版本号,更加先进和灵活。我们写一个简单的实例例。来看一下到底有多先进和灵活。

    build.gradle 配置

    android { 
    
     compileSdkVersion 'android-L' 
    
     buildToolsVersion "20.0.0"  
    
     defaultConfig { 
    
     minSdkVersion 'L' 
    
     targetSdkVersion 'L' 
    
     ... 
    
     } 
    
     ... 
    
    } 
    
    
     
    
     dependencies { 
    
     compile 'com.android.support:recyclerview-v7:+' 
    
     ... 
    
    } 
    


    開始

     

    首先是布局文件里使用 RecyclerView

      <RelativeLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:tools="http://schemas.android.com/tools"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            tools:context=".MyActivity" >
    
            <android.support.v7.widget.RecyclerView
                android:id="@+id/recyclerView"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:scrollbars="vertical" />
        </RelativeLayout>

    Activity 中

     

    @Override 
    
     protected void onCreate(Bundle savedInstanceState) { 
    
    super.onCreate(savedInstanceState); 
    
     setContentView(R.layout.activity_my); 
    
     RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView); 
    
     // 创建一个线性布局管理器 
    
     LinearLayoutManager layoutManager = new LinearLayoutManager(this); 
    
     // 设置布局管理器 
    
     recyclerView.setLayoutManager(layoutManager); 
    
     
     // 创建数据集 
     String[] dataset = new String[100]; 
    
     for (int i = 0; i < dataset.length; i++){ 
    
     dataset = "item" + i; 
    
     } 
    
     // 创建Adapter,并指定数据集 
    
    MyAdapter adapter = new MyAdapter(dataset); 
    
     // 设置Adapter 
    
     recyclerView.setAdapter(adapter); 
     
     } 
    
    



     

    RecyclerView 首先的一个特点就是,将 layout 抽象成了一个 LayoutManager,RecylerView 不负责子 View 的布局,我们能够自己定义 LayoutManager 来实现不同的布局效果。眼下仅仅提供了LinearLayoutManager。 LinearLayoutManager 能够指定方向,默认是垂直, 能够指定水平, 这样就轻松实现了水平的 ListView。


    接下来看 Adapter 是怎么实现的

    public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>
    {
    	// 数据集
    	private String[] mDataset;
    
    	public MyAdapter(String[] dataset)
    	{
    		super();
    		mDataset = dataset;
    	}
    
    	@Override
    	public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i)
    	{
    
    		// 创建一个View,简单起见直接使用系统提供的布局。就是一个TextView
    
    		View view = View.inflate(viewGroup.getContext(), android.R.layout.simple_list_item_1, null);
    
    		// 创建一个ViewHolder
    
    		ViewHolder holder = new ViewHolder(view);
    
    		return holder;
    
    	}
    
    	@Override
    	public void onBindViewHolder(ViewHolder viewHolder, int i)
    	{
    
    		// 绑定数据到ViewHolder上
    
    		viewHolder.mTextView.setText(mDataset);
    
    	}
    
    	@Override
    	public int getItemCount()
    	{
    
    		return mDataset.length;
    
    	}
    
    	public static class ViewHolder extends RecyclerView.ViewHolder
    	{
    
    		public TextView mTextView;
    
    		public ViewHolder(View itemView)
    		{
    
    			super(itemView);
    
    			mTextView = (TextView) itemView;
    
    		}
    
    	}
    
    }
    


     

    RecyclerView 的另一个特点是标准化了 ViewHolder。 编写 Adapter 面向的是 ViewHoder 而不在是View 了, 复用的逻辑被封装了。 写起来更加简单。



     

    RecyclerView 简单使用之后, 发现确实灵活了非常多, RecyclerView 的特性还有非常多。 下一篇文章再继续探索,未完待续

  • 相关阅读:
    build.gradle文件详解<转> 推荐
    openGL 环境配置
    手写 大整数
    FOJ有奖月赛-2016年8月(daxia专场之过四题方有奖)
    2.1 基本计数方法
    第7章 代码
    第7章 高级数据结构的编程实验
    3.3 字符串(1)
    2016_NENU_CS_3
    3.2 区间信息的维护与查询
  • 原文地址:https://www.cnblogs.com/mqxnongmin/p/10721303.html
Copyright © 2011-2022 走看看