集ListView+GridView+瀑布流于一身的RecyclerView

      自己新控件的学习方法首先是看效果,再学习怎么实现,当然在实现过程中难免会遇到各种问题,所谓塞翁失马焉知非福,解决问题的过程能够更好帮助我们接触到更深层次的东西.废话不多说.

   --------------------------------------------------------------------------------------------------

    RecyclerView的效果的话,如题,一个控件可实现三种效果.那么问题来了,与这三控件相比,RecyclerView到底有什么优势.

    捡简单的来讲把,最明显的好处即"举一反三",用RecyclerView通过设置LayoutManager(布局管理器)即可控制其显示方式是ListView或GridView又或瀑布流,简单粗暴.

    再者,RecyclerView添加灵活性,所谓的灵活,就是放手让你去闯,那么你面临的是自由,又是挑战.你能够实现更炫酷的动画,你也需要自己手动添加更多约束.举个例子来讲,RecyclerView以ListView的形态显示时,你可以通过ItemAnimator设置Item增删的动画(想想就很炫酷),但是,Item的点击事件需要自己手动添加(系统并没有提供这些).

    有图有真相,附一张Demo运行出来的图片把.

   

    这个界面的实现是头布局+瀑布流的身子.这样看起来是不是很炫酷!!RecyclerView的使用难就难在Adapter的实现(好好努力 - -).

    再看RecyclerView这个名字,recycler是再循环的意思,还记得ListView的Adapter里提供的getView()方法中的参数contentView把,我们做的优化是利用其保存我们的ViewHolder把,RecyclerView的Adapter是直接将ViewHolder封装起来,我们只需要实现自己的ViewHolder就行啦.如下可见

  1.  public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,  
  2.                                                    int viewType) {  
  3.         // create a new view  
  4.         View v = LayoutInflater.from(parent.getContext())  
  5.                                .inflate(R.layout.my_text_view, parent, false);  
  6.         // set the view's size, margins, paddings and layout parameters  
  7.         ...  
  8.         ViewHolder vh = new ViewHolder(v);  
  9.         return vh;  
  10.     }  
  11.   
  12.     // Replace the contents of a view (invoked by the layout manager)  
  13.     @Override  
  14.     public void onBindViewHolder(ViewHolder holder, int position) {  
  15.         // - get element from your dataset at this position  
  16.         // - replace the contents of the view with that element  
  17.         holder.mTextView.setText(mDataset[position]);  
  18.   
  19.     } 


        --------------------------------------------------------------------------------------------------

    关于具体怎么实现的话,我想网上应该有很多这样的Demo,毕竟RecyclerView已经并不陌生了,我这里主要想分享一下自己在实现过程中遇到过的问题.

    RecyclerView位于v7包,在SDK下extras的android里就有啦.只需要RecyclerView的话直接把jar包拿出来用就行.

   问题一:

   The hierarchy of the type MainActivity is inconsistent

   出现这个问题的原因可能是导入的Jar包不完整,v7包里的RecyclerView要依赖V4包里的控件,如果v4包比较旧的话就不行了.这样的话,解决方法是在SDK Manager中升级Android-Support-Library至最新,再将v7和v4包导入到项目中.

   问题二:

   Caused by :java.lang.NoClassDefFoundError :android.support.v7.recyclerview.R$styleable.

   这个问题是我在运行的时候出现的.我的解决方法是,更换导入的recyclerview的jar包,位置如下...\sdk\extras\android\m2repository\com\android\support\recyclerview-v7,在这里面应该是有不同版本的jar包,选择与你项目版本匹配的即可.

   


 




--------------------------------------------------------------------------------------------

                                                                        新手入门,错误之处还望指导.  = =...

   

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
RecyclerView 和 CardView 是 Android 开发中常用的两个控件,它们经常被一起使用来实现列表展示的功能。 RecyclerView 是 Android 自带的列表控件,相比于 ListViewGridView,它具有更好的性能和更加灵活的布局方式。相比于 ListViewRecyclerView 可以实现更好的复用机制,可以提高列表的滑动流畅度和减少内存占用。 CardView 是 Android 自带的卡片式布局控件,它可以让布局具有卡片的效果,常用于展示某个条目的详细信息。CardView 可以嵌套在 RecyclerView 中使用,实现列表中每个条目都是卡片的效果,同时也可以添加点击事件和动画效果。 在使用 RecyclerView 和 CardView 实现列表展示的时候,我们需要先创建一个 RecyclerView,并设置相应的布局管理器和适配器。适配器需要继承 RecyclerView.Adapter 类,实现相应的方法,以便于渲染每个条目的数据。在适配器中,我们可以创建一个 ViewHolder,用来缓存每个条目的 View。 然后,我们需要创建一个 CardView,用来展示每个条目的数据。在 CardView 中,我们可以添加图片、文字、按钮等控件,来展示每个条目的详细信息。同时,我们也可以给 CardView 设置点击事件,以便于用户点击后跳转到相应的界面。 最后,我们需要将适配器设置到 RecyclerView 中,让 RecyclerView 显示我们的列表。在适配器中,我们还可以添加一些动画效果,让列表更加生动有趣。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值