第一轮铁大树洞APP开发冲刺(3)
写在前面
经过昨天的错误方向尝试后,今天终于找到了正确的方向。APP不过是一个客户端,请求数据的事交给servlet去处理就好,app只需要获得数据并处理就好。在想明白这些后,一切就明朗了起来。起床后先是学习了Okhttp的知识,下午实现了RecyclerView的展示和下拉刷新模块。
团队冲刺博客地址:https://www.cnblogs.com/three3/p/12733546.html
正文
今日成果展示
首先是RecyclerView显示所有内容:
然后下拉可以刷新:
逻辑和困难分析
这个看似很简单的功能,实现起来是非常的费事啊。在安卓开发中,请求数据和更新数据的行为都需要在非主线程进行,防止数据堵塞。我们这里封装了Okhttp获取call,然后在Activity中对其回调进行处理,处理完成后通过Message传递给Handler来通知主线程更新UI。同时在做这些事之前我们要定义一个响应的瀑布流适配器,以用来放置数据等。至于下拉刷新功能,导入SwipeRefreshLayout后就可以很简单的实现了。主要说说今天遇到的困难:
- 无法处理http请求。从安卓9.0后,不再支持使用不安全的连接(http),可我自己的API都是http的,我也没钱去买域名申请https服务器。经过一番操作后,终于搞定了。如图:
在Manifests文件里首先添加网络请求
在application下打开对http的访问请求:
注意,我们在打开后需要删除掉APP然后再安装一次。这样才能获取到权限。 - 对于数据的处理犯了难。从后台提交了json数据,前台怎么转成list呢?我们可以这样:
Type type = new TypeToken<List<Post>>(){}.getType();
List<Post> posts = mGson.fromJson(response.body().string(), type);
明日任务
今天晚些时候整理了一下回帖模块的思路。明天估计能写完。