[Android Pro] 超能RecyclerView组件使用
RecyclerView最强大的功能在于秒变功能,只需要改动很少的代码就可以实现ListView,GridView及水平ListViw的切换功能
- public class MainActivity extends ActionBarActivity {
- private RecyclerView mRecyclerView;
- private List mDatas;
- private TestAdapter mAdapter;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- initDatas();
- initViews();
- }
- private void initDatas() {
- mDatas=new ArrayList();
- TestData data=new TestData();
- for (int i = 'A'; i < 'z'; i++) {
- data.setTitle(Title+(char)i);
- data.setContent(Content+(char)i);
- mDatas.add(data);
- }
- }
- private void initViews() {
- mRecyclerView=(RecyclerView) findViewById(R.id.test_rcv);
- mAdapter=new TestAdapter(this, mDatas);
- mRecyclerView.setAdapter(mAdapter);
- /************水平ListView效果****************************************/
- LinearLayoutManager ll=new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, true);
- mRecyclerView.setLayoutManager(ll);
- /************垂直ListView效果****************************************/
- LinearLayoutManager ll=new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, true);//实现ListView效果
- mRecyclerView.setLayoutManager(ll);
- /************水平滚动的GridView效果****************************************/
- StaggeredGridLayoutManager ll=new StaggeredGridLayoutManager(5, StaggeredGridLayoutManager.HORIZONTAL);//水平GridView效果,5列展示
- mRecyclerView.setLayoutManager(ll);
- /************GridView效果****************************************/
- GridLayoutManager ll=new GridLayoutManager(this, 4);//4列展示
- mRecyclerView.setLayoutManager(ll);
- }
- }
下面就是实现瀑布流操作,主要改的就是我们的适配器,要在适配器中动态计算item的高度
- public class WaterFlowAdapter extends Adapter {
- private Context mContext;
- private List mDatas;
- private List heightArray;
- public WaterFlowAdapter(Context mContext, List mDatas) {
- this.mContext = mContext;
- this.mDatas = mDatas;
- heightArray=new ArrayList();
- for (int i = 0; i < mDatas.size(); i++) {
- heightArray.add((int)(100+Math.random()*300));
- }
- }
- @Override
- public WaterFlowAdapter.TestViewHolder onCreateViewHolder(ViewGroup paramViewGroup, int paramInt) {
- View v = LayoutInflater.from(mContext).inflate(R.layout.lv_item, null); wrong
- View v = LayoutInflater.from(mContext).inflate(R.layout.lv_item,paramViewGroup,false); right
- TestViewHolder holder = new WaterFlowAdapter.TestViewHolder(v);
- return holder;
- }
- @Override
- public void onBindViewHolder(WaterFlowAdapter.TestViewHolder paramVH, int paramInt) {
- LayoutParams lp=paramVH.itemView.getLayoutParams();
- lp.height=heightArray.get(paramInt);
- paramVH.itemView.setLayoutParams(lp);
- paramVH.titleTv.setText(mDatas.get(paramInt).getTitle());
- paramVH.contentTv.setText(mDatas.get(paramInt).getContent());
- }
- @Override
- public int getItemCount() {
- // TODO Auto-generated method stub
- return mDatas.size();
- }
- class TestViewHolder extends ViewHolder {
- ImageView iconIv;
- TextView titleTv;
- TextView contentTv;
- public TestViewHolder(View holder) {
- super(holder);
- iconIv = (ImageView) holder.findViewById(R.id.item_iv);
- titleTv = (TextView) holder.findViewById(R.id.item_title);
- contentTv = (TextView) holder.findViewById(R.id.item_content);
- }
- }
- }
最后在Activity中:
- mAdapter=new WaterFlowAdapter(this, mDatas);
- mRecyclerView.setAdapter(mAdapter);
- StaggeredGridLayoutManager ll=new StaggeredGridLayoutManager(4, StaggeredGridLayoutManager.VERTICAL);//水平GridView效果,5列展示
- mRecyclerView.setLayoutManager(ll);
[Android Pro] 超能RecyclerView组件使用的更多相关文章
- [Android Pro] 由模块化到组件化(一)
cp from : https://blog.csdn.net/dd864140130/article/details/53645290 在Android SDK一文中,我们谈到模块化和组件化,现在我 ...
- [Android Pro] ScrollView嵌套RecyclerView时滑动出现的卡顿
reference to : http://zhanglu0574.blog.163.com/blog/static/113651073201641853532259/ ScrollView嵌套Rec ...
- Android RecyclerView组件和 Spinner(下拉列表框)
1.RecyclerView <1>知识点介绍 RecyclerView 比 ListView 更高级且更具灵活性. 它是一个用于显示庞大数据集的容器,可通过保持有限数量的视图进行非常有效 ...
- [Android Pro] 完美解决隐藏Listview和RecyclerView去掉滚动条和滑动到边界阴影的方案
reference to : http://blog.csdn.net/ming2316780/article/details/51578621 一.首先是Listview的属性设置 设置滑动到顶部和 ...
- 支付宝 Android 版使用的开源组件
支付宝 Android 版使用的开源组件 前言: 花了点时间整理了 支付宝 Android 客户端使用的开源组件,给需要的同学.在你不知道用什么开源框架的时候可以作下参考,毕竟支付宝是阿里的重量级产品 ...
- android实现超酷的腾讯视频首页和垂直水平网格瀑布流一揽子效果
代码地址如下:http://www.demodashi.com/demo/13381.html 先来一波demo截图 实现ListView.GridView.瀑布流 1.导入RecyclerView的 ...
- [Android Pro] Android性能优化典范第一季
reference to : http://www.cnblogs.com/hanyonglu/p/4244035.html#undefined 2015年伊始,Google发布了关于Android性 ...
- 收藏的Android很好用的组件或者框架。
收藏的Android很好用的组件或者框架. android框架 先说两个站点: http://www.androidviews.net/ 非常好的国外开源码站,就是訪问速度有点慢啊 http://w ...
- android v7兼容包RecyclerView的使用(四)——点击事件的不同方式处理
前三篇文章 android v7兼容包RecyclerView的使用(三)--布局管理器的使用 android v7兼容包RecyclerView的使用(二) android v7兼容包Recycle ...
随机推荐
- BZOJ2115 [Wc2011] Xor
Description Input 第一行包含两个整数N和 M, 表示该无向图中点的数目与边的数目. 接下来M 行描述 M 条边,每行三个整数Si,Ti ,Di,表示 Si 与Ti之间存在 一条权值为 ...
- SQL多条件查询
SELECT a.tel,a.business_code,b.name AS business_name,a.register_time FROM T_RED_USER a LEFT JOIN T_P ...
- Spring3.2.2之后不赞成使用queryForInt
原来: public int getMatchCount(String username,String password){ String sql="select count(*) from ...
- IPC机制
转:http://blog.chinaunix.net/uid-26125381-id-3206237.html IPC 三种通信机制 2012-05-13 17:23:55 最近看了,IPC三种通 ...
- C++处理一个动态规划的问题
嗯哼,别人问的问题,看的我也头晕,百度了一下动态规划,看了看才想起来该怎么做,今天写了写代码,实现了~ 要求是递归,动态规划,想了想这种方法也是最简单的~ 所谓动态规划:把多阶段过程转化为一系列单阶段 ...
- 获取IplImage 数据并打印
int main(int argc, char* argv[]){ IplImage *img=cvLoadImage("c://fruitfs.bmp",1); CvSca ...
- List<T> 序列化与反序列化
[Serializable] public class OrderHead { public String OrderId { get; set; } public String OrderName ...
- linux 下安装memcached与php的memcache扩展
1. 在线安装 yum install memcached: 源代码安装 wget http://memcached.org/latest 下载最新版本 tar -zxvf memcached-1.x ...
- stm32f系列单片机startup_stm32fxxx.s文件说明(转)
* 文件名 : startup_stm32f10x_hd.s;* 库版本 : V3.5.0;* 说明: 此文件为STM32F10x高密度设 ...
- JavaScript 实现鼠标拖动元素
一.前言 最开始实现鼠标拖动元素的目的就是在一个页面上拖动很多小圆点,用于固定定位,然后在复制HTML,粘贴在页面的开发代码中,就是这么一个功能,实现了很多遍,都没有做好,不得已采用了jQuery.f ...