Diycode开源项目 NotificationActivity
1.NotificationActivity预览以及布局详解
1.1.首先看一下通知的具体页面。
1.2.然后是布局代码==>activity_fragment.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_topic"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.gcssloop.diycode.activity.TopicActivity"> <android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"/> <FrameLayout
android:id="@+id/fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"/> </LinearLayout>
1.3.布局分析
这个布局也是非常简单的。
2.通知碎片NotificationsFragment详解
2.1.首先是看一下NotificationActivity活动中的源代码
因为活动布局中有一个碎片。
所以重中之重的就是这个碎片是怎么定义的,然后才能决定相应的页面。
2.2.通知碎片中的成员变量
这里定义了几种通知的方式:
节点变更,Topic有人回复,News有人回复,有人提及,Topic,News,项目中提及这几种。
2.3.打开一个新的通知碎片实例
这里虽然有Bundle,但是没有定义,估计这部分代码是复制粘贴的,没有实际作用。
2.4.初始化数据,注册适配器,请求数据
initData是BaseActivity中定义的普通函数。
setAdapterRegister是RefreshRecyclerFragment中定义的抽象函数。
request是RefreshRecyclerFragement中定义的抽象函数。
2.5.下拉刷新
这个onRefresh也是RefreshRecyclerFragment中定义的抽象函数。
在RefrshRecyclerFragment还有一个onRefresh只有一个参数,它不是抽象的。注意区分。
注意点:这里和其他刷新不同,这里要先从适配器中清除数据。
2.6.加载更多
注意点:将清洗过后的数据加入data,然后data添加到适配器中。
2.7.清洗数据
参数中的datas应该是服务器返回的所有通知
但是有些是多余的
仅仅保留通知类型是话题回复型,以及话题回复的提及型
3.总结一下
3.1.这个通知的活动是非常简单的,继承了BaseActivity,实现了两个关键的抽象方法,第一个是布局的资源id,
然后是初始化视图,将标题栏的标题设置为通知。然后动态加载碎片。
3.2.这个碎片NotificationsFragment也是非常简单的。
继承了SimpleRefreshRecyclerFragment<Notification,GetNotificationsListEvent>,只要可以刷新和加载的
页面都可以继承这个类。有必要实现initData,来默认加载第一页。必须实现的是setAdapterRegister函数,
request请求数据,onRresh刷新,onLoadMore加载更多。这几个都是定义在基类中的抽象函数。
3.3.碎片新建实例采用的方法也很简单,仅仅是新建一个本类的一个实例,然后有必要采用setArguments设置一些
临时记录的数据。
3.4.值得一提的是如何设置适配器。要在适配器中注册,两个参数,一个是通知类,一个是通知的Provider。这里
的适配器是一个自定义带有头部和底部的适配器。
3.5.然后是处理数据,这里过滤了很多信息,只保存了话题的提及已经话题的回复。
Diycode开源项目 NotificationActivity的更多相关文章
- Diycode开源项目 搭建可以具有下拉刷新和上拉加载的Fragment
1.效果预览 1.1.这个首页就是一个Fragment碎片,本文讲述的就是这个碎片的搭建方式. 下拉会有一个旋转的刷新圈,上拉会刷新数据. 1.2.整体结构 首先底层的是BaseFragment 然后 ...
- Diycode开源项目 BaseApplication分析+LeakCanary第三方+CrashHandler自定义异常处理
1.BaseApplication整个应用的开始 1.1.看一下代码 /* * Copyright 2017 GcsSloop * * Licensed under the Apache Licens ...
- DiyCode开源项目 BaseActivity 分析
1.首先将这个项目的BaseActivity源码拷贝过来. /* * Copyright 2017 GcsSloop * * Licensed under the Apache License, Ve ...
- Diycode开源项目 MainActivity分析
1.分析MainActivity整体结构 1.1.首先看一下这个界面的整体效果. 1.2.活动源代码如下 /* * Copyright 2017 GcsSloop * * Licensed under ...
- Diycode开源项目 ImageActivity分析
1.首先看一下效果 1.1做成了一个GIF 1.2.我用格式工厂有点问题,大小无法调到手机这样的大小,目前还没有解决方案. 1.3.网上有免费的MP4->GIF,参考一下这个网站吧. 1.4.讲 ...
- Diycode开源项目 磁盘图片缓存+自定义webViewClient+图片点击js方法
1.磁盘图片缓存器DiskImageCache 1.1.这个类很多情况都可能用的到,耦合性很低,所以分开讲. 源代码: /* * Copyright 2017 GcsSloop * * License ...
- Diycode开源项目 Glide图片加载分析
1.使用Glide前的准备 1.1.首先要build.gradle中添加 github原地址点击我. 参考博客:Glide-开始! 参考博客:android图片加载库Glide的使用介绍. 参考博 ...
- Diycode开源项目 UserActivity分析
1.效果预览 1.1.实际界面预览 1.2. 这是MainActivity中的代码 这里执行了跳转到自己的用户界面的功能. 1.3.点击头像或者用户名跳转到别人的页面 UserActivity的结构由 ...
- Diycode开源项目 TopicContentActivity分析
1.效果预览以及布局分析 1.1.实际效果预览 左侧话题列表的布局是通过TopicProvider来实现的,所以当初分析话题列表就没有看到布局. 这里的话题内容不是一个ListView,故要自己布局. ...
随机推荐
- Object与封装、继承和多态性
Object与封装.继承和多态性 在面向对象编程思想中,无论是C++,Java还是C#等,封装.继承与多态性都有着无与伦比的地位,深入理解并掌握它们是必不可少的.而我将使用C#来浅谈继承与多态性. 1 ...
- Windbg .net内存调试有用的命令(笔记 )
和.net内存调试相关的Windbg命令 首先.load sosex.dll加载ex调试扩展dll 1.!gcgen [obj地址] 显示对象属于gc代数 2.!dumpgen [0/1/2] dum ...
- JavaWeb前端笔记
day06 回顾: bootstrap: css框架,html/css/js集于一身,ie 6/7/8兼容有问题 开发响应式页面,使用于不同的上网设备 使用步骤: 1.导入bootstrap.css ...
- hibernate笔记3--hql查询
1.Query:他是一种比较面向对象的查询方式,query查询也叫做hql查询(hibernate query language),使用query查询,需要接受一个 hql语句进行查询 ...
- Android 仿电商app商品详情页按钮浮动效果
1.效果图如下: 这效果用户体验还是很酷炫,今天我们就来讲解如何实现这个效果. 2.分析 为了方便理解,作图分析 如图所示,整个页面分为四个部分: 1.悬浮内容,floatView 2.顶部内容,he ...
- wechat开发笔记之1.接口示例代码
修改后的php示例代码! <?php /** * wechat php test */ //define your token define("TOKEN", "w ...
- Oracle添加自增长字段方法步骤
第一步:创建自增长序列 CREATE SEQUENCE ZH_ALARM_INFO_SEQ--自动增长列 INCREMENT BY 1 -- 每次加几个 START WITH 1 -- 从1开始计数 ...
- python3基础01(常见语法基础汇总)
#!/usr/bin/env python# -*- coding:utf-8 -*- # 换行\n 续行\ s[:i] + s[i:] 等于 s#转义 \e 空 \000 八进制 \oyy 十六进制 ...
- ADO数据库编程详解(C++)----初级入门篇
一.概述 ADO即Microsoft ActiveXData Object,是Microsoft继ODBC之后,基于OLE DB技术的一种数据库操作技术,使您能够编写通过 OLE DB提供者对在数据库 ...
- 奇怪的Unrooted Tests错误
错误如图: 条件如下: Eclipse里的Maven工程. 使用JUnit4(这个是否必须不知,反正我的工程用的4) 修改某个Test类里的方法名,或者增加一个Test方法. 现象: 在MyEclip ...