[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 ...
随机推荐
- enum是不是"继承"int
enum Color : short { Nono=0, Black=1 } 我们知道基元类型(值类型), 是不可能被继承的,那这里的 :short 到底是什么意思? 我个人理解这里是用来限制取值 ...
- 文件流StreamReader和StreamWriter的使用
using (StreamReader sr = new StreamReader(@"C:\Users\shuai\Desktop\文件流读取.txt", Encoding.De ...
- hdu 1284 钱币兑换问题(动态规划)
Ac code : 完全背包: #include<stdio.h> #include<string.h> int dp[4][40000]; int main(void) { ...
- DS_Store 是什么文件
转自:http://blog.csdn.net/benbenxiongyuan/article/details/9010653 在xcode中,进行svn管理的时候,会发现一个DS_Store文件,这 ...
- .NET中的装饰器设计模式
- BI就是报表?
实际上,报表只是BI的一部分,虽然BI应用的结果通常需要通过报表来展示,但是,BI绝对不仅仅是报表.其实,大家对这些概念的理解,如同15年前的ERP一样.1998年,国内两大巨头金蝶与用友都开始宣称从 ...
- Internet信息服务找不到
最近我的电脑也出现了Internet信息服务找不到的情况,在网络上查了很多方法都没一个正确的,后面通过下面的方法我成功了,故此我把这个经历也分享给大家,希望能够帮到您. 控制面板里“->添加/删 ...
- HDU 3998 Sequence(经典问题,最长上升子序列)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3998 解题报告:求一个数列的最长上升子序列,并求像这样长的不相交的子序列最多有多少个. 我用的是最简单 ...
- Unity3D脚印6——模型动画
原地址:http://www.cnblogs.com/ybgame/archive/2013/02/21/2920009.html 如何导入一个模型,导入的模型在unity3d的project面板中是 ...
- 从零开始写一个武侠冒险游戏-8-用GPU提升性能(3)
从零开始写一个武侠冒险游戏-8-用GPU提升性能(3) ----解决因绘制雷达图导致的帧速下降问题 作者:FreeBlues 修订记录 2016.06.23 初稿完成. 2016.08.07 增加对 ...