RecyclerView
2016-04-16 22:27
507 查看
RecyclerView
v7包里才有的,用来代替ListView的一个新的组件。
优势:
1.在初始化ViewHolder的时候(onCreateViewHolder),就自动实现了优化,不需要自己写ViewHolder的一些判断,组件优化的非常好。2.相对于ListView,RecyclerView可以使用LinearLayoutManager等类似的布局,直接修改布局的样式,不在需要自己去写新的布局了。
3.RecyclerView具备很好的结构层次,可以将ViewHolder和Adapter分开。
首先添加RecyclerView的V7包。
demo如下:
// rv = new RecyclerView(this); // setContentView(rv); // rv.setLayoutManager(new LinearLayoutManager(this)); // rv.setAdapter(new RecyclerView.Adapter() { // // class MyViewHolder extends RecyclerView.ViewHolder { // TextView tv; // public MyViewHolder(TextView itemView) { // super(itemView); // tv = itemView; // } // public TextView getTv() // { // return tv; // } // } // // @Override // public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { // return null; // } // // @Override // public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int i) { // // } // // @Override // public int getItemCount() { // return 0; // } // });
RecyclerView rv ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getSupportFragmentManager().beginTransaction().replace(R.id.linearLay, new mainFragment()).commit(); rv = new RecyclerView(this); setContentView(rv); rv.setLayoutManager(new LinearLayoutManager(this)); rv.setAdapter(new RecyclerView.Adapter() { class MyViewHolder extends RecyclerView.ViewHolder { TextView tv; public MyViewHolder(TextView itemView) { super(itemView); tv = itemView; } public TextView getTv() { return tv; } } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { return new MyViewHolder(new TextView(viewGroup.getContext())); } @Override public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int i) { MyViewHolder myViewHolder = (MyViewHolder)viewHolder; myViewHolder.getTv().setText(data[i]); } @Override public int getItemCount() { return data.length; } String [] data = new String[]{"aaa","bbb","ccc"}; });
//可以查看依赖的写法 //http://www.mvnrepository.com/ //RecyclerView是ListView升级版 //1:创建RecyclerView对象 //1-1:创建RecyclerView对象 //1-2:创建RecyclerView对象每一项的布局 //2:创建布局管理器,来管理RecyclerView对象的每一项 //2-1:布局管理器线性布局【垂直、水平】【每行只能显示一项】 //2-2:布局管理器网格布局【垂直、水平】【每行可以显示多项】 //2-2:布局管理器瀑布流布局【垂直、水平】【每行可以显示多项】【每项的高度不一样,造成参差不齐的多栏布局】 //3:创建适配器 //3-1:创建适配器对象 //3-2:创建适配器集合关联 //3-3:创建ViewHolder //3-4:集合数据绑定到ViewHolder //4:全部组合起来形成RecyclerView对象
RecyclerView还可以实现横向滑动视图。
Android L中的RecyclerView 、CardView 、Palette的使用
CardView
CardView CardView继承自FrameLayout类,可以在一个卡片布局中一致性的显示内容,卡片可以包含圆角和阴影。CardView是一个Layout,可以布局其他View。CardView 的使用可以参考《Material Design UI Widgets》。文章最后会给出这篇文章示例代码。
Palette
Palette从图像中提取突出的颜色,这样可以把色值赋给ActionBar、或者其他,可以让界面整个色调统一,效果见上图(Palette)。 Palette这个类中提取以下突出的颜色: Vibrant (有活力) Vibrant dark(有活力 暗色) Vibrant light(有活力 亮色) Muted (柔和) Muted dark(柔和 暗色) Muted light(柔和 亮色) itmap bm = BitmapFactory.decodeResource(getResources(), item.image); Palette palette = Palette.generate(bm); if (palette.getLightVibrantColor() != null) { name.setBackgroundColor(palette.getLightVibrantColor().getRgb()); getSupportActionBar().setBackgroundDrawable(new ColorDrawable(palette.getLightVibrantColor().getRgb())); // getSupportActionBar(). }
/article/1361160.html
相关文章推荐
- java日常开发你还要纠结把String格式的日期转换成Date吗?
- 薛老师软考高项学员:2016年4月6日作业
- C#学习之旅2
- 薛老师软考高项学员:2016年4月6日作业
- leetcode——53——Maximum Subarray
- Notification任务通知栏
- newInstance( )和new的区别
- 关于thinkpad和thinkpad x230更换固态硬盘后蓝屏0x000000f4或0x0000007a错误
- Android学习笔记(35):Android活动条
- Web安全漏洞(续)
- 专题二 1001
- Android中的布局
- hdu 4630 查询[L,R]区间内任意两个数的最大公约数
- hdu 4630 查询[L,R]区间内任意两个数的最大公约数
- STM32 keil4 extern问题
- Intent
- CentOS碰到两个问题,顺便解决了下
- hdu 1559(最大子矩阵)
- apache(基于c写cgi)
- LeetCode-39&40&216.Combination Sum