Recycler自定义组件二
2016-07-14 22:05
411 查看
这是要做的效果图
同样需要RecyclerView,所以说这玩意好强大。
由图看出,需要两个layout分别左对齐右对齐,还需要个LinearLayoutManager就可以简单实现,。
步骤嘛如下:
1.首先,两个布局分别和两边对齐,这个看个人喜好了,想弄多难看就弄多难看,反正现在没人看;
2.别忘了导个RecyclerVIew包,没她你嘛事都做不了,在主布局放入这个RecyclerView控件,将来
view就放在这里;
以上呢准别工作完成后,就是main里面功能了;
3.一样,声明属性并找到id,尤其是RecyclerView,和一个数据包List;
4.这个布局是建立在linearLayoutManager上的,所以布局管理器如下
recyclerview.setLayoutManager(new LinearLayoutManager(this));
接下来收集咱们的数据:
5.建一个createData方法,还要建一个类MyData,创一个构造方法
参数分别是text,image和类型type
class MyData { String text; int image; int type; public MyData(String text,int image, int type) { this.text = text; this.image=image; this.type = type; }}
new一个ArrayList,然后装数据(我太懒,就装了四个)
public void createData() { list = new ArrayList<>(); MyData data1 = new MyData("晚上一起吃饭?",R.drawable.mm3, 0); MyData data2 = new MyData("我减肥",R.drawable.ff2, 1); MyData data3 = new MyData("给你脸了,你还没奥巴马黑",R.drawable.ff2, 1); MyData data4 = new MyData("我明天就去晒太阳",R.drawable.mm3, 0); list.add(data1); list.add(data2); list.add(data3); list.add(data4);}
6.上面还是基本工作,接下来还需要有个适配器Adapter,那就造呗;
和之前不同的是,这次的方法里多了个getItemViewType方法,获取list中的数据的类型,
@Override public int getItemViewType(int position) { return list.get(position).type; }
7.既然造了那么多了,那就把ViewHolder也就造出来的了,这里要注意的是,我们需要的是两个ViewHolder,
分别为两边提供声明好的id(太长而且都会,我就不贴了);
因为是两边分治,所以,Adapter中的方法基本上都是复制两边而已,偶尔改一改重复的变量名;
分治是利用类型Type来区分的,
这里可以用一个switch来进行case选择
switch (viewType) { case 0: View view0 = LayoutInflater.from(MainActivity.this).inflate(R.layout.list_item_0, null); MyViewHolder0 holder0 = new MyViewHolder0(view0); return holder0; case 1: View view1 = LayoutInflater.from(MainActivity.this).inflate(R.layout.list_item_1, null); MyViewHolder1 holder1 = new MyViewHolder1(view1); return holder1; }
onBinViewHolder里一样可以用switch来写,
MyData中那对象,获取数据类型,按类型分情况提取资源并放到桌面上
MyData data = list.get(position); int type = data.type; switch (type) { case 0: MyViewHolder0 holder0 = (MyViewHolder0) holder; holder0.imageview.setImageResource(data.image); holder0.textview.setText(data.text); break; case 1: MyViewHolder1 holder1 = (MyViewHolder1) holder; holder1.textview.setText(data.text); holder1.imageview.setImageResource(data.image); break; } }
然后,大!功!告!成!
1
1111
相关文章推荐
- RecyclerView的使用之多种Item加载布局
- Android中RecyclerView布局代替GridView实现类似支付宝的界面
- Android代码实现AdapterViews和RecyclerView无限滚动
- 深入解析Android中的RecyclerView组件
- Android App开发中使用RecyclerView实现Gallery画廊的实例
- 学习Android开发之RecyclerView使用初探
- Android仿XListView支持下拉刷新和上划加载更多的自定义RecyclerView
- Android RecyclerView加载不同布局简单实现
- Android开发中RecyclerView组件使用的一些进阶技讲解
- Android RecyclerView实现下拉刷新和上拉加载
- Android RecyclerView滑动删除和拖动排序
- Android RecyclerView添加头部和底部的方法
- Android RecyclerView的Item自定义动画及DefaultItemAnimator源码分析
- Android RecyclerView布局就这么简单
- Android实现评论栏随Recyclerview滑动左右移动
- Android App开发中RecyclerView控件的基本使用教程
- Android中的RecyclerView新组件初步上手指南
- Android开发之RecyclerView控件
- 学习Android Material Design(RecyclerView代替ListView)
- 使用RecyclerView添加Header和Footer的方法