根据仿人人客户端教程,编程实现Demo(二)---实现JSON解析人人API2.0,获取用户信息以及新鲜事信息

本文主要是介绍根据仿人人客户端教程,编程实现Demo(二)---实现JSON解析人人API2.0,获取用户信息以及新鲜事信息,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这几天在以前那个Demo基础上,新添加了一些功能:(基于原文教程-http://blog.csdn.net/android_ls/article/details/8815622)--大概Demo里面的内容就是到原文的该教程为止

由于Android SDK版本不一样,以及人人API版本升级,所以代码会有所区别,不过大部分代码都是原作者的(我只是整合,做大自然的搬运工。。。)

与原文作者区别:

1.通过Https Get方式,通过人人网API2.0,获取用户的基本信息,以及获取新鲜事信息。

1.1:采用了API2.0方法(以前的API1.0 2013年后就不再使用了),区别是,Https请求方式有所区别,参数有所区别,具体区别人人网官网上都有。

1.2:人人API2.0的Https请求方式:(请求新鲜事信息,以及用户登录信息都是用的 Https Get)。

http://wiki.dev.renren.com/wiki/V2/user/login/get---人人官方文档里面已经写的比较明白了。

Demo里面也有:LeftPanelLayout类里面请求 用户基本信息,FreshNewsLayout类里面请求新鲜事信息

2:在写图片双缓存(内存+硬盘缓存)时。

2.1:有一些函数已经随着SDK版本的上升而升级,所以需要判断手机的API版本,选择相应的函数,比如FileCache类里面

(比如我使用的测试机是API11,而里面有一些函数要求API15,所以我就需要判断手机的API版本来选择不同函数了,因为低版本不能使用高版本的API,而尽量使用高版本API是写程序应该具备的好习惯)

2.2:在请求新鲜事的Https Get中,只要填写新鲜事 FeedType,就会请求出错,所以最后妥协了,使用了默认值,当然,下次这个问题一定得解决,因为以后的功能是需要它的。

(比如过滤列表)

3.在JSON解析时

3.1:刚开始对照这老版本人人API1.0里面的文档:http://wiki.dev.renren.com/wiki/Feed.get   ---里面居然没有说明改版本已经废弃(可能是我没有仔细发现)。结果,对照着1.0上面

的JSON类型写了一些实体类,最后发现1.0已经废弃,需要2.0.所以很多实体类都白写了(这可是体力活啊。。。)

3.2:原文作者使用了GSon,我这里直接是自己编写的JSON解析(这东西容易,多写写也能加深一点印象),需要注意的是,某一些JSONObject以及JSONArray需要判断是否为null,然后在try里面进行,要不然会出错。(JSON的具体实现就是先得到官方的JSON,然后LOG出来,自己对照这LOG里面的信息,与自己的实体类关联就可以,DEMO里的JSON解析在AUthParse类里面)

4.FreshNews面版的信息显示

4.1:主要Layout以及代码都是用的原文里面的,里面返回的新鲜事信息是一个  FeedList 列表,所以在视图里面添加了一个 ListView,然后采用Adapter装载解析出来的FeedList信息,然后根据信息,通过url装载图片,与里面的文字一起显示(达到图文显示效果)

测试DEMO里的截图:

未来展望:


目前实现的功能就这么多了,很多ITEM都没有加功能,以后继续跟着教程学下去了。

---2014/12/8日更新---

1.实现新鲜事下拉列表(过滤项列表)

1.1:通过PopupWindow与ListView实现,目前只是实现了弹出下拉列表,具体的后续功能下次实现。

1.2:不知道为什么,PopupWindow必须要设置一张背景,要不然就会卡死不动。。。

1.3:PopupWindow 里面的ListView设置监听无效---

原因:ListView中的单个Item的view中存在checkbox,button等view,会导致ListView.setOnItemClickListener无效,事件会被子View捕获到,ListView无法捕获处理该事件.。

解决方法:
在checkbox、button对应的view处加android:focusable="false"  android:clickable="false"android:focusableInTouchMode="false"其中focusable是关键
这个问题纠结了好久,最后还是逛CSDN时,看到以前别人的帖子才解决: 传送门(原文):http://blog.csdn.net/kankankankan2222/article/details/7693190

总的来说,特别感谢原文作者:http://blog.csdn.net/android_ls/article/details/8815622   通过这个教程真的系统的学习了很多。


本次DEMO的下载地址:http://download.csdn.net/detail/u010979495/8233833

这篇关于根据仿人人客户端教程,编程实现Demo(二)---实现JSON解析人人API2.0,获取用户信息以及新鲜事信息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1005337

相关文章

MySQL 8 中的一个强大功能 JSON_TABLE示例详解

《MySQL8中的一个强大功能JSON_TABLE示例详解》JSON_TABLE是MySQL8中引入的一个强大功能,它允许用户将JSON数据转换为关系表格式,从而可以更方便地在SQL查询中处理J... 目录基本语法示例示例查询解释应用场景不适用场景1. ‌jsON 数据结构过于复杂或动态变化‌2. ‌性能要

Python实现终端清屏的几种方式详解

《Python实现终端清屏的几种方式详解》在使用Python进行终端交互式编程时,我们经常需要清空当前终端屏幕的内容,本文为大家整理了几种常见的实现方法,有需要的小伙伴可以参考下... 目录方法一:使用 `os` 模块调用系统命令方法二:使用 `subprocess` 模块执行命令方法三:打印多个换行符模拟

SpringBoot+EasyPOI轻松实现Excel和Word导出PDF

《SpringBoot+EasyPOI轻松实现Excel和Word导出PDF》在企业级开发中,将Excel和Word文档导出为PDF是常见需求,本文将结合​​EasyPOI和​​Aspose系列工具实... 目录一、环境准备与依赖配置1.1 方案选型1.2 依赖配置(商业库方案)二、Excel 导出 PDF

Python实现MQTT通信的示例代码

《Python实现MQTT通信的示例代码》本文主要介绍了Python实现MQTT通信的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 安装paho-mqtt库‌2. 搭建MQTT代理服务器(Broker)‌‌3. pytho

spring中的@MapperScan注解属性解析

《spring中的@MapperScan注解属性解析》@MapperScan是Spring集成MyBatis时自动扫描Mapper接口的注解,简化配置并支持多数据源,通过属性控制扫描路径和过滤条件,利... 目录一、核心功能与作用二、注解属性解析三、底层实现原理四、使用场景与最佳实践五、注意事项与常见问题六

Spring的RedisTemplate的json反序列泛型丢失问题解决

《Spring的RedisTemplate的json反序列泛型丢失问题解决》本文主要介绍了SpringRedisTemplate中使用JSON序列化时泛型信息丢失的问题及其提出三种解决方案,可以根据性... 目录背景解决方案方案一方案二方案三总结背景在使用RedisTemplate操作redis时我们针对

使用zip4j实现Java中的ZIP文件加密压缩的操作方法

《使用zip4j实现Java中的ZIP文件加密压缩的操作方法》本文介绍如何通过Maven集成zip4j1.3.2库创建带密码保护的ZIP文件,涵盖依赖配置、代码示例及加密原理,确保数据安全性,感兴趣的... 目录1. zip4j库介绍和版本1.1 zip4j库概述1.2 zip4j的版本演变1.3 zip4

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

一文详解如何使用Java获取PDF页面信息

《一文详解如何使用Java获取PDF页面信息》了解PDF页面属性是我们在处理文档、内容提取、打印设置或页面重组等任务时不可或缺的一环,下面我们就来看看如何使用Java语言获取这些信息吧... 目录引言一、安装和引入PDF处理库引入依赖二、获取 PDF 页数三、获取页面尺寸(宽高)四、获取页面旋转角度五、判断

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤