recyclerview代替listview和grideview

1.RecyclerView 是Google推出的最新的 替代ListView、GridView的组件,RecyclerView是用来显示大量数据的容器,并通过有限数量的子View,来提高滚动时的性能。

2.优点:RecyclerView 不再负责布局,而是专注于布局复用。

自己在用的过程中,感觉适配器清晰明了,一个填充布局,填充完布局然后到viewholder找到控件,onBindViewHolder里就是给控件设置内容。

3.3种:
      LinearLayoutManager 线性布局管理器      (ListView效果)
      GridLayoutManager    网格布局管理器    (GridView效果)
      StaggeredGridLayoutManager  瀑布流管理器
4.布局:使用v7包下

<android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scrollbars="vertical" />

5.适配器:自己使用的自布局是系统的一个简单布局R.layout.simple_list_item_1,就一个textview,简单用数组来实现。

public class ReAdapter extends RecyclerView.Adapter<ReAdapter.ViewHolder> {
    // 数据集
    private String[] mDataset;

public ReAdapter(String[] dataset) {
        super();
        mDataset = dataset;
    }

@Override
    public int getItemCount() {
        return mDataset.length;
    }

@Override
    public void onBindViewHolder(ViewHolder arg0, int arg1) {
        // 绑定数据到ViewHolder上
        arg0.mTextView.setText(mDataset[arg1]);

}

@Override
    public ViewHolder onCreateViewHolder(ViewGroup arg0, int arg1) {
        // 创建一个View,简单起见直接使用系统提供的布局,就是一个TextView
        View view = View.inflate(arg0.getContext(),
                android.R.layout.simple_list_item_1, null);
        // 创建一个ViewHolder
        ViewHolder holder = new ViewHolder(view);
        return holder;
    }

public static class ViewHolder extends RecyclerView.ViewHolder {
        public TextView mTextView;

public ViewHolder(View itemView) {
            super(itemView);
            mTextView = (TextView) itemView;
        }
    }

}

6.activity中,第一个是实现gridview,listview的话只需要将GridLayoutManager  layoutManager = new GridLayoutManager(this,3);改成 LinearLayoutManager layoutManager = new LinearLayoutManager(this);就可以实现了。当然这种情况只是自布局都是一个textview,要加载别的还需要修改布局,适配器。

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
        GridLayoutManager  layoutManager = new GridLayoutManager(this,3);
        recyclerView.setLayoutManager(layoutManager);
        // 创建数据集
        String[] dataset = new String[100];
        for (int i = 0; i < dataset.length; i++){
            dataset[i] = "item" + i;
        }
        // 创建Adapter,并指定数据集
        ReAdapter adapter = new ReAdapter(dataset);
        // 设置Adapter
        recyclerView.setAdapter(adapter);

}

7.这样来 是不是感觉比原来的简单好多,而且可以重复利用资源。

时间: 2024-10-28 04:51:16

recyclerview代替listview和grideview的相关文章

使用RecyclerView替代ListView(一)

RecyclerView是一个比ListView更灵活的一个控件,以后可以直接抛弃ListView了.具体好在哪些地方,往下看就知道了. 首先我们来使用RecyclerView来实现ListView的效果,一个滚动列表,先看下效果图(除了有动画之外,没什么特别--): 每个item的布局如下: <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http:/

[Android]使用RecyclerView替代ListView(三)

以下内容为原创,转载请注明: 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4268097.html  这次来使用RecyclerView实现PinnedListView的效果,效果很常见: 开发的代码建立在上一篇([Android]使用RecyclerView替代ListView(二):http://www.cnblogs.com/tiantianbyconan/p/4242541.html)基础之上. 修改布局如下: 1 <?xml vers

如何使用Android最新的RecyclerView取代ListView?

效果图如下: 使用RecyclerView之前需要先导入android.support.v7.widget.RecyclerView所在的jar包.就在support.v7下面,目录结构如下: ...\android-sdk-windows\extras\android\support\v7\recyclerview\libs\android-support-v7-recyclerview.jar 找到自己的SDK目录,按照上述路径找到android-support-v7-recyclervie

Android Material Design学习之RecyclerView代替 ListView

前言 # Android Material Design越来越流行,以前很常用的 ListView 现在也用RecyclerView代替了,实现原理还是相似的.笔者实现一下 RecyclerView,代码比较简单,适合初学者,如有错误,欢迎指出. 源码地址(欢迎star) https://github.com/studychen/SeeNewsV2 本文链接 http://blog.csdn.net/never_cxb/article/details/50495505,转载请注明出处. 复习 L

[Android]使用RecyclerView替代ListView(一)

以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4232560.html RecyclerView是一个比ListView更灵活的一个控件,以后可以直接抛弃ListView了.具体好在哪些地方,往下看就知道了. 首先我们来使用RecyclerView来实现ListView的效果,一个滚动列表,先看下效果图(除了有动画之外,没什么特别--): 每个item的布局如下: <?xml version="1.0&

[Android]使用RecyclerView替代ListView(二)

以下内容为原创,转载请注明: 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4242541.html 以前写过一篇“[Android]使用AdapterTypeRender对不同类型的item数据到UI的渲染(http://www.cnblogs.com/tiantianbyconan/p/3992843.html)”,用于在有很多不同类型不同布局的item的时候怎么去较好的进行view的绑定和数据的渲染,但是这个是针对ListView写的.这次

android——仿网易今日头条等自定义频道listview 或者grideview等item上移到另一个view中

转载请注明出处: www.cnblogs.com/shoneworn 我这里只是简单的用了两个listview来实现的,先上效果图.比较粗糙.预留了自定义的空间. 思路: 从上图应该可以看的出来.就是上下两个listview.点击下面的ltem.会动态的移动到上一个listview的最后.上面的listview 为listview1,下面的为listview2.  点击listview2,获取到view ,设置一个动画,移动到listview1 ,listview2中删除被点的item.list

时光轴二之RecyclerView版时光轴效果

因为现在RecyclerView是support-v7包中的新组件,是一个强大的滑动组件,与经典的ListView相比,同样拥有item回收复用的功能,但是直接把viewholder的实现封装起来,用户只要实现自己的viewholder就可以了,该组件会自动帮你回收复用每一个item. 它不但变得更精简,也变得更加容易使用,而且更容易组合设计出自己需要的滑动布局. 使用它的理由: RecyclerView is a more advanced and flexible version of Li

RecyclerView版的时光轴

因为现在RecyclerView是support-v7包中的新组件,是一个强大的滑动组件,与经典的ListView相比,同样拥有item回收复用的功能,但是直接把viewholder的实现封装起来,用户只要实现自己的viewholder就可以了,该组件会自动帮你回收复用每一个item. 它不但变得更精简,也变得更加容易使用,而且更容易组合设计出自己需要的滑动布局. 使用它的理由: RecyclerView is a more advanced and flexible version of Li