组件RecyclerView的应用(一)

首先我们知道RecyclerView组件是ListView的升级版,今天先介绍基础的RecyclerView的基本布局RecyclerView.Adapter和LayoutManager

第一:

LayoutManager

我们知道ListView只能在垂直方向上滚动,Android API没有提供ListView在水平方向上面滚动的支持。或许有多种方式实现水平滑动,ListView并不是设计来做这件事情的。但是RecyclerView相较于ListView,在滚动上面的功能扩展了许多。它可以支持多种类型列表的展示要求,主要如下:

LinearLayoutManager ,可以支持水平和竖直方向上滚动的列表。

StaggeredGridLayoutManager ,可以支持交叉网格风格的列表,类似于瀑布流或者Pinterest。

GridLayoutManager ,支持网格展示,可以水平或者竖直滚动,如展示图片的画廊。

因此RecyclerView相对于ListView来说自定义性扩展了很多

第二:

RecyclerView.Adapter和ListView的BaseAdapter不同之处在于:BaseAdapter都是在getView一个方法中实现的,包括View的实例化以及组件的绑定。在RecyclerView.Adapter中,则提供了RecyclerView.ViewHolder机制,这个类必须我们自己定义,主要是用来保存视图的类,主要在onCreateViewHolder中实现View的保存

public static class ViewHolder extends RecyclerView.ViewHolder{    public TextView itemText;    public ViewHolder(View itemView) {        super(itemView);        itemText = (TextView)findViewById(R.id.item_text);    }}
@Overridepublic RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {    View view = layoutInflater.inflate(R.layout.item_recyclerview,parent,false);    return new ViewHolder(view);}另外还需要实现getCount()方法,也就是返回item的数量,另外 onBindViewHolder()方法实现对应的组件和数据绑定
@Overridepublic void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {    ((ViewHolder)holder).itemText.setText(titleList.get(position));}

以下为我写的基本实现RecyclerView功能的一段小代码/**适配器类**/
public class RecyclerAdapter extends RecyclerView.Adapter {
    private List<String> titleList;
    private LayoutInflater layoutInflater;
    public RecyclerAdapter(Context context)
    {
        this.titleList = new ArrayList<>();
        for(int i=0;i<30;i++)
        {
            titleList.add("item"+i);
        }
        layoutInflater = LayoutInflater.from(context);
    }
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = layoutInflater.inflate(R.layout.item_recyclerview,parent,false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        ((ViewHolder)holder).itemText.setText(titleList.get(position));
    }

    @Override
    public int getItemCount() {
        return titleList.size();
    }
    public static class ViewHolder extends RecyclerView.ViewHolder
    {
        //public TextView itemText;
        public ViewHolder(View itemView) {
            super(itemView);
        }
    }
}

/**

主界面代码

**/

        mRecyclerView = (RecyclerView)pageList.get(SPORT).findViewById(R.id.recyclerview);
        mRecyclerView.setHasFixedSize(true);
        mLinearLayoutManager = new LinearLayoutManager(this);
        mLinearLayoutManager.setOrientation(OrientationHelper.VERTICAL);
        RecyclerAdapter mRecyclerAdapter = new RecyclerAdapter(this);
        mRecyclerView.setLayoutManager(mLinearLayoutManager);
        mRecyclerView.setAdapter(mRecyclerAdapter);

  注:pageList.get(SPORT)为自己定义的一个实例化view,读者可以根据自己需要定制不同的xml文件并将其实例化为view

时间: 2024-12-22 12:40:55

组件RecyclerView的应用(一)的相关文章

Android新组件RecyclerView介绍,其效率更好

今天我们首先来说为什么要介绍这个新组件RecyclerView,因为前几天我发布了一个常用面试题ListView的复用及如何优化的文章,介绍给一些开发者,但是我看到有关的反馈说:现在都不再用listview了,代替的是RecyclerView,确实是,但是用的毕竟是少数,所以可能很多人对于这个组件不是很了解,那么我们就来介绍一下吧! 1.什么是RecyclerView RecyclerView 是 android-support-v7-21 版本中新增的一个 Widgets,官方对于它的介绍则是

Android最新组件RecyclerView,替代ListView

转载请注明出处:http://blog.csdn.net/allen315410/article/details/40379159 万众瞩目的android最新5.0版本号不久前已经正式公布了,对于我这样对新事物不感冒的人来说,自然也是会关注的,除了新的android5.0带来的新的UI设计和用户体验之外,最让android程序猿感兴趣的是5.0版本号的sdk和一大堆新的API.5.0据说是额外添加或者改动了5000个API,新增了一些新的组件,以下介绍的RecyclerView就是当中之中的一

RecyclerView完全解读

RecyclerView 控件简介 ListView的升级版 LinearLayoutManager GridLayoutManager StaggeredGridLayoutManager 定制Item动画,指定Item之间的分隔线 RecyclerView相关的重要类 Adapter ViewHolder LayoutManager ItemDecoration ItemAnimator 添加RecyclerView控件依赖包 Android Studio开发工具,在本项目的build.gr

ListView或者RecyclerView滚动时隐藏Toolbar (1)

原文链接 : How to hide/show Toolbar when list is scroling (part 1) 译者 : chaossss 校对者: 这里校对者的github用户名 状态 : 校对中 今天我打算写一篇博文给大家介绍Google+ App的一个酷炫效果--向上/向下滚动ListView/RecyclerView时,Toolbar和FAB(屏幕右下方的小按钮)会隐藏/出现.这个效果也被Google视为符合 Material Design 规范的效果哦,详情参见: Mat

RecyclerView的那点事儿

RecyclerView 控件简单介绍 ListView的升级版 LinearLayoutManager GridLayoutManager StaggeredGridLayoutManager 定制Item动画,指定Item之间的分隔线 RecyclerView相关的重要类 Adapter ViewHolder LayoutManager ItemDecoration ItemAnimator 加入RecyclerView控件依赖包 Android Studio开发工具,在本项目的build.

Android Train--探索----他山之石,可以攻玉

1.RecyclerView   --------->android新组件RecyclerView使用介绍和进阶使用,替用Gallery

Android学习笔记:超能RecyclerView组件使用总结

个人认为 RecyclerView组件确实值得学习并用到我们的项目中去,前面学了相关的内容.今天再补充一些相关的东东. 1,实现对RecyclerView中的数据进行加入和删除操作.还是一样直接上代码: public class MainActivity extends ActionBarActivity { private RecyclerView mRecyclerView; private List<TestData> mDatas; private TestAdapter mAdapt

Android学习笔记:超能RecyclerView组件使用(上)

这几天开发中遇到了一些界面滑动问题,主要是界面中滑动控件使用太多,导致滑动冲突.刚好在学习RecyclerView这个控件,所以根据视屏学习情况做个学习笔记 ,当然很多内容都是学习视屏中的,感谢老师的付出. RecyclerView是android.support.v7包中的新组件,是一个强大的滑动组件,它强大在哪呢? 1,实现ListView效果 2,实现GridView效果 3,实现横向滑动的ListView及横向滑动的GridView效果 4,实现瀑布流效果 5,自定义Item增加与删除动

Android零基础入门第64节:揭开RecyclerView庐山真面目

大家还记得之前在第38期~第50期都在学习列表控件吗,其中用了8期讲ListView的使用,相信都已经掌握好了吧.那么本期一起来学习Android 5.X新增的一个列表组件,那就是RecyclerView的使用. 一.RecyclerView概述 从前面的学习我们知道,ListView的功能非常强大,几乎绝大部分应用程序都会使用到,虽然也学会一些方法技巧来提升ListView的效率,但其性能还是不是很完美. 另外ListView的可扩展性相对来说比较弱,以前要实现每个列表项的高度不同的界面,或者