RecyclerView最强大的功能在于秒变功能,只需要改动很少的代码就可以实现ListView,GridView及水平ListViw的切换功能

  1. public class MainActivity extends ActionBarActivity {
  2. private RecyclerView mRecyclerView;
  3. private List mDatas;
  4. private TestAdapter mAdapter;
  5. @Override
  6. protected void onCreate(Bundle savedInstanceState) {
  7. super.onCreate(savedInstanceState);
  8. setContentView(R.layout.activity_main);
  9. initDatas();
  10. initViews();
  11. }
  12.  
  13. private void initDatas() {
  14. mDatas=new ArrayList();
  15. TestData data=new TestData();
  16. for (int i = 'A'; i < 'z'; i++) {
  17. data.setTitle(Title+(char)i);
  18. data.setContent(Content+(char)i);
  19. mDatas.add(data);
  20. }
  21. }
  22.  
  23. private void initViews() {
  24. mRecyclerView=(RecyclerView) findViewById(R.id.test_rcv);
  25. mAdapter=new TestAdapter(this, mDatas);
  26. mRecyclerView.setAdapter(mAdapter);
  27.  
  28. /************水平ListView效果****************************************/
  29. LinearLayoutManager ll=new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, true);
  30. mRecyclerView.setLayoutManager(ll);
  31.  
  32. /************垂直ListView效果****************************************/
  33. LinearLayoutManager ll=new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, true);//实现ListView效果
  34. mRecyclerView.setLayoutManager(ll);
  35.  
  36. /************水平滚动的GridView效果****************************************/
  37.  
  38. StaggeredGridLayoutManager ll=new StaggeredGridLayoutManager(5, StaggeredGridLayoutManager.HORIZONTAL);//水平GridView效果,5列展示
  39. mRecyclerView.setLayoutManager(ll);
  40.  
  41. /************GridView效果****************************************/
  42. GridLayoutManager ll=new GridLayoutManager(this, 4);//4列展示
  43. mRecyclerView.setLayoutManager(ll);
  44. }
  45. }

下面就是实现瀑布流操作,主要改的就是我们的适配器,要在适配器中动态计算item的高度

  1. public class WaterFlowAdapter extends Adapter {
  2. private Context mContext;
  3. private List mDatas;
  4. private List heightArray;
  5.  
  6. public WaterFlowAdapter(Context mContext, List mDatas) {
  7. this.mContext = mContext;
  8. this.mDatas = mDatas;
  9. heightArray=new ArrayList();
  10. for (int i = 0; i < mDatas.size(); i++) {
  11. heightArray.add((int)(100+Math.random()*300));
  12. }
  13. }
  14.  
  15. @Override
  16. public WaterFlowAdapter.TestViewHolder onCreateViewHolder(ViewGroup paramViewGroup, int paramInt) {
  17. View v = LayoutInflater.from(mContext).inflate(R.layout.lv_item, null); wrong
  18.  
  19. View v = LayoutInflater.from(mContext).inflate(R.layout.lv_item,paramViewGroup,false); right
  20. TestViewHolder holder = new WaterFlowAdapter.TestViewHolder(v);
  21. return holder;
  22. }
  23.  
  24. @Override
  25. public void onBindViewHolder(WaterFlowAdapter.TestViewHolder paramVH, int paramInt) {
  26. LayoutParams lp=paramVH.itemView.getLayoutParams();
  27. lp.height=heightArray.get(paramInt);
  28. paramVH.itemView.setLayoutParams(lp);
  29. paramVH.titleTv.setText(mDatas.get(paramInt).getTitle());
  30. paramVH.contentTv.setText(mDatas.get(paramInt).getContent());
  31. }
  32.  
  33. @Override
  34. public int getItemCount() {
  35. // TODO Auto-generated method stub
  36. return mDatas.size();
  37. }
  38.  
  39. class TestViewHolder extends ViewHolder {
  40. ImageView iconIv;
  41. TextView titleTv;
  42. TextView contentTv;
  43.  
  44. public TestViewHolder(View holder) {
  45. super(holder);
  46. iconIv = (ImageView) holder.findViewById(R.id.item_iv);
  47. titleTv = (TextView) holder.findViewById(R.id.item_title);
  48. contentTv = (TextView) holder.findViewById(R.id.item_content);
  49. }
  50.  
  51. }
  52. }

最后在Activity中:

  1. mAdapter=new WaterFlowAdapter(this, mDatas);
  2. mRecyclerView.setAdapter(mAdapter);
  3.  
  4. StaggeredGridLayoutManager ll=new StaggeredGridLayoutManager(4, StaggeredGridLayoutManager.VERTICAL);//水平GridView效果,5列展示
  5. mRecyclerView.setLayoutManager(ll);

[Android Pro] 超能RecyclerView组件使用的更多相关文章

  1. [Android Pro] 由模块化到组件化(一)

    cp from : https://blog.csdn.net/dd864140130/article/details/53645290 在Android SDK一文中,我们谈到模块化和组件化,现在我 ...

  2. [Android Pro] ScrollView嵌套RecyclerView时滑动出现的卡顿

    reference to : http://zhanglu0574.blog.163.com/blog/static/113651073201641853532259/ ScrollView嵌套Rec ...

  3. Android RecyclerView组件和 Spinner(下拉列表框)

    1.RecyclerView <1>知识点介绍 RecyclerView 比 ListView 更高级且更具灵活性. 它是一个用于显示庞大数据集的容器,可通过保持有限数量的视图进行非常有效 ...

  4. [Android Pro] 完美解决隐藏Listview和RecyclerView去掉滚动条和滑动到边界阴影的方案

    reference to : http://blog.csdn.net/ming2316780/article/details/51578621 一.首先是Listview的属性设置 设置滑动到顶部和 ...

  5. 支付宝 Android 版使用的开源组件

    支付宝 Android 版使用的开源组件 前言: 花了点时间整理了 支付宝 Android 客户端使用的开源组件,给需要的同学.在你不知道用什么开源框架的时候可以作下参考,毕竟支付宝是阿里的重量级产品 ...

  6. android实现超酷的腾讯视频首页和垂直水平网格瀑布流一揽子效果

    代码地址如下:http://www.demodashi.com/demo/13381.html 先来一波demo截图 实现ListView.GridView.瀑布流 1.导入RecyclerView的 ...

  7. [Android Pro] Android性能优化典范第一季

    reference to : http://www.cnblogs.com/hanyonglu/p/4244035.html#undefined 2015年伊始,Google发布了关于Android性 ...

  8. 收藏的Android很好用的组件或者框架。

    收藏的Android很好用的组件或者框架. android框架  先说两个站点: http://www.androidviews.net/ 非常好的国外开源码站,就是訪问速度有点慢啊 http://w ...

  9. android v7兼容包RecyclerView的使用(四)——点击事件的不同方式处理

    前三篇文章 android v7兼容包RecyclerView的使用(三)--布局管理器的使用 android v7兼容包RecyclerView的使用(二) android v7兼容包Recycle ...

随机推荐

  1. BZOJ2115 [Wc2011] Xor

    Description Input 第一行包含两个整数N和 M, 表示该无向图中点的数目与边的数目. 接下来M 行描述 M 条边,每行三个整数Si,Ti ,Di,表示 Si 与Ti之间存在 一条权值为 ...

  2. SQL多条件查询

    SELECT a.tel,a.business_code,b.name AS business_name,a.register_time FROM T_RED_USER a LEFT JOIN T_P ...

  3. Spring3.2.2之后不赞成使用queryForInt

    原来: public int getMatchCount(String username,String password){ String sql="select count(*) from ...

  4. IPC机制

    转:http://blog.chinaunix.net/uid-26125381-id-3206237.html  IPC 三种通信机制 2012-05-13 17:23:55 最近看了,IPC三种通 ...

  5. C++处理一个动态规划的问题

    嗯哼,别人问的问题,看的我也头晕,百度了一下动态规划,看了看才想起来该怎么做,今天写了写代码,实现了~ 要求是递归,动态规划,想了想这种方法也是最简单的~ 所谓动态规划:把多阶段过程转化为一系列单阶段 ...

  6. 获取IplImage 数据并打印

    int main(int argc, char* argv[]){ IplImage *img=cvLoadImage("c://fruitfs.bmp",1);    CvSca ...

  7. List<T> 序列化与反序列化

    [Serializable] public class OrderHead { public String OrderId { get; set; } public String OrderName ...

  8. linux 下安装memcached与php的memcache扩展

    1. 在线安装 yum install memcached: 源代码安装 wget http://memcached.org/latest 下载最新版本 tar -zxvf memcached-1.x ...

  9. stm32f系列单片机startup_stm32fxxx.s文件说明(转)

    * 文件名          : startup_stm32f10x_hd.s;* 库版本           : V3.5.0;* 说明:             此文件为STM32F10x高密度设 ...

  10. JavaScript 实现鼠标拖动元素

    一.前言 最开始实现鼠标拖动元素的目的就是在一个页面上拖动很多小圆点,用于固定定位,然后在复制HTML,粘贴在页面的开发代码中,就是这么一个功能,实现了很多遍,都没有做好,不得已采用了jQuery.f ...