Skip to content

Latest commit

 

History

History
42 lines (37 loc) · 2.12 KB

notes.md

File metadata and controls

42 lines (37 loc) · 2.12 KB

Todo:

  1. √ CardView 加: 公众号 、 作者、分类、时间。
  2. √ 主页面的CoordinatorLayout -> hide toolbar
  3. √ NavigationDrawer
  4. √ 首页(文章) | 公众号
  5. √ 公众号 (TabHost + ViewPager)
  6. √ 文章详情
  7. √ MPV
  8. √ 组件化
  9. √ 贡献者
  10. 本地缓存
  11. 启动页
  12. Banner
  13. 多渠道打包
  14. 自定义View - 图标(新)等
  15. RecyclerView显示动画
  16. 页面切换过渡动画
  17. Behavior
  18. 引入RxJava

Issues:

  1. 屏幕切换
  2. RecylerAdapter.ViewHolder setOnClickListener 的最佳实践?

由于 onCreateViewHolder 和 onBindViewHolder 都会被多次调用,直接在这两个方法中 new 一个onClickListener 的实例都会造成对象的反复创建和销毁
所以相对比较好的做法就是在 Adapter 中定义一个接口回调方法,并在 Adapter 中实例化一个这个接口类型的成员变量
在 onCreateViewHolder 方法中调用 ViewHolder 的构造方法,传递这个 listener 的引用给 ViewHolder
在 ViewHolder 的构造方法中为 view 设定 setOnClickListener, 在 onClick 中调用这个接口的回调,把 view 和 getLayoutPosition() 传递给回调方法
这样在回调方法中就可以根据传入的view和pos,得到点击的view和位置,做出相关处理。
示例代码: ArticlesListAdapter.java

  1. Glide
  2. Retrofit
  3. OKHttp
  4. ARouter

Notes:

  1. Fragment#setArguments(Bundle bundle) 跟 直接在Fragment中加上一个setter/getter有什么区别? A: 区别在于,setArguments设定的参数,在Fragment经历destroy和re-create的过程中会被保存下来,这些参数不需要程序在 onSaveInstanceState 方法中做特殊的处理,就可以在下一次 onCreate 的时候继续获取。对比来说, 如果用setter/getter来存取的话,需要自己考虑 onSaveInstanceState 的实现。

注意事项

  1. 不要在子组件styles.xml中添加theme, app组件需要用base里面的theme