android 从服务器获取新闻数据并显示在客户端
新闻客户端案例
第一次进入新闻客户端需要请求服务器获取新闻数据,做listview的展示,
为了第二次再次打开新闻客户端时能快速显示新闻,需要将数据缓存到数据库中,下次打开可以直接去数据库中获取新闻直接做展示。
总体步骤:
1.写布局listview ok
2.找到listview,设置条目的点击事件。 ok
3.获取数据提供给listview做展示。
3.1:获取本地数据库缓存的新闻数据,让listview显示。如果没有网络不至于显示空界面。
3.2:请求服务器获取新闻数据,是一个json字符串,需要解析json,封装到list集合中。提供给listview展示。
public static String newsPath_url = "xxxx";
//封装新闻的假数据到list中返回
public static ArrayList<NewsBean> getAllNewsForNetWork(Context context) {
ArrayList<NewsBean> arrayList = new ArrayList<NewsBean>();
try{
//1.请求服务器获取新闻数据
//获取一个url对象,通过url对象得到一个urlconnnection对象
URL url = new URL(newsPath_url);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
//设置连接的方式和超时时间
connection.setRequestMethod("GET");
connection.setConnectTimeout(10*1000);
//获取请求响应码
int code = connection.getResponseCode();
if(code == 200){
//获取请求到的流信息
InputStream inputStream = connection.getInputStream();
String result = StreamUtils.streamToString(inputStream);
//2.解析获取的新闻数据到List集合中。
JSONObject root_json = new JSONObject(result);//将一个字符串封装成一个json对象。
JSONArray jsonArray = root_json.getJSONArray("newss");//获取root_json中的newss作为jsonArray对象
for (int i = 0 ;i < jsonArray.length();i++){//循环遍历jsonArray
JSONObject news_json = jsonArray.getJSONObject(i);//获取一条新闻的json
NewsBean newsBean = new NewsBean();
newsBean. id = news_json.getInt("id");
newsBean. comment = news_json.getInt("comment");//评论数
newsBean. type = news_json.getInt("type");//新闻的类型,0 :头条 1 :娱乐 2.体育
newsBean. time = news_json.getString("time");
newsBean. des = news_json.getString("des");
newsBean. title = news_json.getString("title");
newsBean. news_url = news_json.getString("news_url");
newsBean. icon_url = news_json.getString("icon_url");
arrayList.add(newsBean);
}
//3.清楚数据库中旧的数据,将新的数据缓存到数据库中
new NewsDaoUtils(context).delete();
new NewsDaoUtils(context).saveNews(arrayList);
}
}catch (Exception e) {
e.printStackTrace();
}
return arrayList;
}
3.3: 获取服务端数据成功后,需要缓存到本地数据库,缓存前需要清空本地数据库。
4.创建一个Adapter继承BaseAdapter,封装4个方法,需要接收获取的新闻数据
5.将adapter设置给listview。
android 从服务器获取新闻数据并显示在客户端的更多相关文章
- 使用 Qt 获取 UDP 数据并显示成图片(2)
本文首发于 BriFuture 的 个人博客 在我的前一篇文章 使用 Qt 获取 UDP 数据并显示成图片 中,我讲了如何用 Python 模拟发送数据,如何在 Qt 中高效的接收 UDP 数据包并将 ...
- Android 手机卫士--获取联系人信息并显示与回显
前面的文章已经实现相关的布局,本文接着进行相关的功能实现 本文地址:http://www.cnblogs.com/wuyudong/p/5951794.html,转载请注明出处. 读取系统联系人 当点 ...
- (转)链接服务器——获取EXCEL数据
测试目的:验证利用链接服务器.分布式查询获取EXCEL中的数据测试环境:Microsoft SQL Server 2005 - 9.00.3080.00 (X64) Enterprise Editi ...
- 解决Android与服务器交互大容量数据问题
对于目前的状况来说,移动终端的网络状况没有PC网络状况那么理想.在一个Android应用中,如果需要接收来自服务器的大容量数据,那么就不得不考虑客户的流量问题.本文根据笔者的一个项目实战经验出发,解决 ...
- Opencv+MFC获取摄像头数据,显示在Picture控件
分为两步:OpenCV获取摄像头数据+图像在Picture上显示 第一步:OpenCV获取摄像头数据 参考:http://www.cnblogs.com/epirus/archive/2012/06/ ...
- 使用 Qt 获取 UDP 数据并显示成图片
一个项目,要接收 UDP 数据包,解析并获取其中的数据,主要根据解析出来的行号和序号将数据拼接起来,然后将拼接起来的数据(最重要的数据是 R.G.B 三个通道的像素值)显示在窗口中.考虑到每秒钟要接收 ...
- 转载 解决Android与服务器交互大容量数据问题
对于目前的状况来说,移动终端的网络状况没有PC网络状况那么理想.在一个Android应用中,如果需要接收来自服务器的大容量数据,那么就不得不考虑客户的流量问题.本文根据笔者的一个项目实战经验出发,解决 ...
- Android 从服务器获取时间戳转换为年月日
用JAVA相关类转换.代码如下: Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(NumberUtils.ge ...
- 创建一个Java Web项目,获取POST数据并显示
新建一个新的Java Web工程项目 打开IntelliJ IDEA 新建一个工程,选择选择Java Enterprise,设置Tomcat的安装目录,点击下一步. 选中Create project ...
随机推荐
- @RequestMapping 用法详解之地址映射
@RequestMapping 用法详解之地址映射 引言: 前段时间项目中用到了RESTful模式来开发程序,但是当用POST.PUT模式提交数据时,发现服务器端接受不到提交的数据(服务器端参数绑定没 ...
- linux下用c实现ls命令
struct dirent中的几个成员: d_type:4表示为目录,8表示为文件 d_reclen:16表示子目录或文件,24表示非子目录 d_name:目录或文件的名称 #include < ...
- oracleDBA-D2
1.超级管理员sys和system的区别: sys权限比system大,system无法查看到当前数据库是否运行在归档模式下,无法关闭数据库.sys是老大,system是老二. 2.OEM-oracl ...
- JDBC的操作总结
JDBC 操作总结 JDBC是一组能够执行SQL语句的API JDBC的操作方式比较单一,简单的分为以下几个流程: 1.通过数据库厂商提供的JDB类库想DriverManager注册数据库驱动 ...
- Servlet引擎tomcat之安装
原文来自:https://www.digitalocean.com/community/tutorials/how-to-install-apache-tomcat-8-on-ubuntu-14-04 ...
- 用代码控制鼠标键盘(C#语言)
前些时间想做一个鼠标点击器,用到了这些知识. 下面整理记录一下. ps.感谢各位大神 下面直接上代码 1.鼠标的控制 class MouseMove { #region MouseEvent [Sys ...
- Delphi编程时候诡异地出现ORA-00937错误,记录解决它的思路和方法
首先需要说明,这个问题的出现需要几个前提:使用微软的Oracle驱动(使用Oracle自己的驱动不会出现这个问题).使用绑定变量法,使用Format等方式拼接SQL也不会出现这个问题,还有一些诡异的规 ...
- 【积累篇:他山之石,把玉攻】Mime 类型列表
按照内容类型排列的 Mime 类型列表 类型/子类型 扩展名 application/envoy evy application/fractals fif application/futurespla ...
- 在Mac中像Windows一样查看Tomcat控制台信息
在Windows系统中,通过startup.bat启动Tomcat之后会打开一个控制台,输出日志信息,在系统调试过程中,也会随时输入日志或错误信息,对开发很有帮助. 在Mac中,通过startup.s ...
- 我的 vim 基本配置
" required 使用 vundle 需要先设置这两项 set nocompatible filetype off " 设置 vundle 插件 使用帮助:https://gi ...