RecyclerView的极尽升华:BaseRecyclerViewFragment
本篇文章掺杂了过多的作者个人思维,不利于读者阅读,新写了一篇对读者非常友好、条理清晰的BaseRecyclerViewFragment,地址
http://blog.csdn.net/qq_36523667/article/details/78721251
之前一篇文章已经把recyclerview尽可能简化了,这里再简化一步,仅仅在子类中写出操作即可
BaseRecyclerViewFragment
public abstract class BaseRecyclerViewFragment<T> extends BaseFragment {private RecyclerView recyclerView; private List<T> list; private int itemLayoutId; private String orientation; // 取得所有RecyclerView相关 protected abstract Map<String, Object> getMap(); // 对item及其子view的操作 protected abstract void initRecyclerViewOperate(ViewHolder holder, T t); // 从Map中取出所有RecyclerView相关 @Override protected void initData() {Map<String, Object> map = getMap(); recyclerView = (RecyclerView)map.get("RecyclerView"); list = (List<T>)map.get("List"); itemLayoutId = (Integer) map.get("ItemLayoutId"); orientation = map.get("Orientation")+""; }// 取得adapter private CommonAdapter initRecyclerViewAdapter() {return new CommonAdapter<T>(getContext(), itemLayoutId, list){@Override protected void convert(ViewHolder holder, T t, int position) {initRecyclerViewOperate(holder, t); }}; }@Override protected void initWidget(View root) {LinearLayoutManager layoutManager = new LinearLayoutManager(getContext()); // 判断方向 if (orientation.equals("horizontal")){layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); }// 获取adapter CommonAdapter adapter = initRecyclerViewAdapter(); recyclerView.setLayoutManager(layoutManager); recyclerView.setAdapter(adapter); }//abstract getLayoutId }
所以在子类中只需要这样,真正地符合了开闭原则
public class VideoFragment extends BaseRecyclerViewFragment<TypeListBean> {// 布局 @Override protected int getLayoutId() {return R.layout.fragment_course_video; }// RecyclerView @BindView(R.id.recycler_view)RecyclerView mRecyclerView; // RecyclerView data private List<TypeListBean> typeList; // rec data from net @Override protected void initData() {typeList = new ArrayList<>(); TypeListBean typeListBean = new TypeListBean(); typeListBean.setUrl("http://bunengshuodemimi:8080/fitapp/list1_fit_type/zengji.jpg"); typeListBean.setTitle("增肌"); typeList.add(typeListBean); super.initData(); }// recyclerView相关 @Override protected Map<String, Object> getMap() {Map<String, Object> map = new HashMap<>(); map.put("RecyclerView", mRecyclerView); map.put("List", typeList); map.put("ItemLayoutId", R.layout.item_rec_type); map.put("Orientation", "vertical"); return map; }// recyclerView操作 @Override protected void initRecyclerViewOperate(ViewHolder holder, TypeListBean typeListBean) { // 设置标题 holder.setText(R.id.type_title, typeListBean.getTitle()); // 设置背景 ImageView mImageView = holder.getView(R.id.type_image); Glide.with(getActivity()).load(typeListBean.getUrl()).into(mImageView); } }
RecyclerView的极尽升华:BaseRecyclerViewFragment相关推荐
- RecyclerView的极尽升华:BaseRecyclerViewFragment(修改)
之前有写一篇,东西很好,但是掺杂上我自己的东西,显得不太好.所以这里写一个通俗易懂,清新优雅的版本.既可以简化读者在面对大量RecyclerView时的操作,也可以让读者在阅读本文时,有所收获. 先提 ...
- 猫狗大战----类的实例化和继承,带你看懂类方法的使用
用python编写程序,实现猫狗大战小游戏情景,让你更好的了解类方法的使用! 要求: 1.可创建多个猫和狗的对象,并初始化每只猫和狗(包括昵称.品种.攻击力.生命值,速度等属性). 2.猫可以攻击狗, ...
- fastjson 是反射吗_这就是GTA6吗?五款画面效果逆天的《GTA5》顶级mod
原标题:这就是GTA6吗?五款画面效果逆天的<GTA5>顶级mod 首发于2013年的<侠盗猎车手5>至今依然非常畅销,而它的PC版也不断涌现出各种mod.虽然GTA6还遥遥无 ...
- 极客新闻——13、美团到餐研发团队资源成本优化实践
本文笔记全部来自<极客新闻>--新鲜的技术资讯.权威的趋势剖析.别样的技术洞察 工程师主要面对的是技术挑战,更关注技术层面的目标.研发团队的管理者则会把实现项目成果和业务需求作为核心目标. ...
- recyclerview 滚动冲突_如何处理手势冲突 | 手势导航连载 (三)
作者 / Chris Banes, Android 开发者关系团队工程师 我们将在近期为大家带来一个关于 "手势导航" 的系列连载,本文是手势导航连载的第三篇,如果您希望查看前两篇 ...
- 阳台花园不只美丽-东方美琪·安琪:身心健康谋定心灵升华
阳台花园不只美丽-东方美琪·安琪:身心健康谋定心灵升华 "相信拥有一个种满花的院子,是每一个人曾经的梦想,阳光下在花园里喝茶.夜晚在花园里乘凉,春天看百花盛放,夏天听虫鸣私语,秋天有习习凉风 ...
- Android RecyclerView和ScrollView嵌套使用
我们的recyclerView有多个layoutmanager,通过重写layoutmanager的方法就可以让recyclerView和ScrollView嵌套了.但是请注意,如果recyclerV ...
- 九大神招,让Python里数据分析神器Jupyter,完美升华
九大神招,让Python里数据分析神器Jupyter,完美升华 Notebook作为一款经典的交互式编辑器,在视图数据等实时展示方面有其特有的优势,但是相比pycharm.sublime等编辑工具,J ...
- MVVM架构之自动增删改的极简RecycleView的实现
先上个源代码的链接:github.com/whenSunSet/- RecycleView是Google替代ListView的一种方案,其有着很高的解耦度,让许多开发者抛弃了以往的ListView,那 ...
最新文章
- 发送快递:配置静态路由
- 面试官问我:平常如何对你的Java程序进行调优?
- python编程案例教程书籍-清华大学出版社-图书详情-《Python开发案例教程》
- IIS 7.0的ASP.NET应用程序生命周期概述
- 查看进程状态信息命令 jps - (Java Virtual Machine Process Status Tool)
- LeetCode 1185. 一周中的第几天
- mysql使用裸设备_请教dd清空裸设备问题
- 【转】HashMap,ArrayMap,SparseArray源码分析及性能对比
- 进击的雨燕------------错误处理
- StretchDIBits函数显示图片
- 分享一个去水印接口,完全免费,早点下手啊
- 【技术指标】MACD详解
- windows7计算机用户账户,浅析win7旗舰版系统中三种系统用户账户的特点
- SQL Cookbook 系列 - 若干另类目标
- js监听iframe是否加载完毕
- nginx搭建及配置
- Axure 进阶 | 制作携程网酒店“入住日期”与“退房日期”控件
- 黑色温敏性PNIPAM-AuNPs/CHOL-AuNPs纳米金粒修饰聚合物的制备过程
- TensorBoard对训练过程可视化(不用tf.summaries.merge_all)
- Centos7配置 yum代理