Android 新闻客户端案例
实现新闻客户端案例首先需要注意XML文件的在线解析,适配器问题和ListView控件的使用。
根据自己的需要和要求,准备好素材。
1、NewsInfo.xml文件如下:
<?xml version =“1.0”encoding =“UTF-8”?> <新闻> <报纸资讯> <图标> http://10.51.9.168:8080/images1/a.jpg </图标> <TITLE>科技温暖世界</ TITLE> <内容>进入一个更有爱的领域</内容> <类型> 1 </类型> <评价> 69 </评论> </报纸资讯> <报纸资讯> <图标> http://10.51.9.168:8080/images1/b.jpg </图标> <TITLE>“神武”</ TITLE> <内容>新美术资源盘点,视觉新体验</内容> <类型> 2 </类型> <评价> 35 </评论> </报纸资讯> <报纸资讯> <图标> http://10.51.9.168:8080/images1/c.jpg </图标> <TITLE>南北车正式公布合并</ TITLE> <内容>南北车将于今日正式公布合并</内容> <类型> 3 </类型> <评价> 2 </评论> </报纸资讯> <报纸资讯> <图标> http://10.51.9.168:8080/images1/d.jpg </图标> <TITLE>萌呆了!汪星人抱玩偶酣睡</ TITLE> <内容>汪星人抱玩偶酣睡,萌翻网友</内容> <类型> 1 </类型> <评价> 25 </评论> </报纸资讯> <报纸资讯> <图标> http://10.51.9.168:8080/images1/e.jpg </图标> <TITLE>风力发电进校园</ TITLE> <内容>风力发电普进校园</内容> <类型> 2 </类型> <评价> 26 </评论> </报纸资讯> <报纸资讯> <图标> http://10.51.9.168:8080/images1/f.jpg </图标> <TITLE>地球一小时</ TITLE> <内容>地球熄灯一小时</内容> <类型> 1 </类型> <评价> 23 </评论> </报纸资讯> <报纸资讯> <图标> http://10.51.9.168:8080/images1/g.jpg </图标> <TITLE>最美公路</ TITLE> <内容>最美公路,难以想象</内容> <类型> 1 </类型> <评价> 23 </评论> </报纸资讯> </新闻>
2、对客户端进行布局: activity_main.xml文件:
<?xml version =“1.0”encoding =“utf-8”?>
<RelativeLayout xmlns:android =“http://schemas.android.com/apk/res/android” 的xmlns:工具= “http://schemas.android.com/tools” 机器人:ID = “@ + ID / activity_main” 机器人:layout_width = “match_parent” 机器人:layout_height = “match_parent” 工具:上下文= “cn.edu.bzu.news.MainActivity”> <的LinearLayout 机器人:ID = “@ + ID /线路1” 机器人:layout_width = “match_parent” 机器人:layout_height = “WRAP_CONTENT”> <ListView的 机器人:ID = “@ + ID /列表1” 机器人:layout_width = “match_parent” 机器人:layout_height = “WRAP_CONTENT”> </的ListView> </的LinearLayout> </ RelativeLayout>
item.xml文件:
<?xml version =“1.0”encoding =“utf-8”?>
<RelativeLayout xmlns:android =“http://schemas.android.com/apk/res/android” 机器人:layout_width = “match_parent” 机器人:layout_height = “match_parent”> <com.loopj.android.image.SmartImageView 机器人:ID = “@ + ID / item_image” 机器人:layout_width = “80dp” 机器人:layout_height = “60dp” android:scaleType =“centerCrop”/> <TextView的 机器人:ID = “@ + ID / item_tv1” 机器人:layout_width = “WRAP_CONTENT” 机器人:layout_height = “WRAP_CONTENT” android:layout_toRightOf =“@ id / item_image”/> <TextView的 机器人:ID = “@ + ID / item_tv2” 机器人:layout_width = “WRAP_CONTENT” 机器人:layout_height = “WRAP_CONTENT” 机器人:layout_below = “@ ID / item_tv1” 机器人:layout_toRightOf = “@ ID / item_image”/> <TextView的 机器人:ID = “@ + ID / item_tv3” 机器人:layout_width = “WRAP_CONTENT” 机器人:layout_height = “WRAP_CONTENT” 机器人:layout_alignParentRight = “真”/>
</ RelativeLayout的>
3、MainActivity的实现代码:
import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler; import java.io.ByteArrayInputStream;
import java.util.List; import cn.edu.bzu.news.adapter.MyAdapter;
进口cn.edu.bzu.news.entity.NewsInfo;
import cn.edu.bzu.news.service.NewsInfoService; 公共课MainActivity扩展AppCompatActivity { 私有ListView listView; 私人MyAdapter适配器 private List <NewsInfo> newsInfos; protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); 的setContentView(R.layout.activity_main); 的ListView =(ListView中)findViewById(R.id.list1); 加载(); } public void load() { AsyncHttpClient asyncHttpClient = new AsyncHttpClient(); asyncHttpClient.get(getString(R.string.servelurl)),新的AsyncHttpResponseHandler(){ @覆盖 public void onSuccess(String content){ super.onSuccess(内容); byte [] bytes = content.getBytes(); ByteArrayInputStream bais = new ByteArrayInputStream(bytes); newsInfos = NewsInfoService.getNewsInfo(bais); if(newsInfos == null)Toast.makeText(MainActivity.this,“解析失败”,Toast.LENGTH_LONG).show(); else { adapter = new MyAdapter(MainActivity.this,R.layout.item,newsInfos); listView.setAdapter(适配器); Toast.makeText(MainActivity.this, “成功”,Toast.LENGTH_LONG).show(); } } @覆盖 public void onFailure(Throwable error,String content){ super.onFailure(误差,内容); Toast.makeText(MainActivity.this, “请求失败”,Toast.LENGTH_LONG).show(); } }); } }
4、NewsInfo.java:
public class NewsInfo { 私人字符串路径; 私人字符串标题; 私人字符串 私人长评论 public void setDes(String des){ this.des = des } public void setTitle(String title){ this.title = title; } public void setPath(String path){ this.path = path; } public void setComment(long comment){ this.comment =评论 } public String getPath(){ 回路 } public String getTitle(){ 返回标题 } public String getDes(){ 回报 } public long getComment(){ 返回评论 } }
5、NewsInfoService.java:
import org.xmlpull.v1.XmlPullParser; import java.io.InputStream; import java.util.ArrayList; import java.util.List; 进口cn.edu.bzu.news.entity.NewsInfo; public class NewsInfoService { public static List <NewsInfo> getNewsInfo(InputStream inputStream) { XmlPullParser parser = Xml.newPullParser(); 尝试{ parser.setInput(的inputStream, “UTF-8”); int type = parser.getEventType(); 列表<NewsInfo> newsInfos = null; NewsInfo newsInfo = null; 而(键入!= XmlPullParser.END_DOCUMENT) { 开关(类型){ case XmlPullParser.START_TAG: if(“news”.equals(parser.getName())) newsInfos = new ArrayList <NewsInfo>(); else if(“newsInfo”.equals(parser.getName())) newsInfo = new NewsInfo(); else if(“icon”.equals(parser.getName())){ String icon = parser.nextText(); newsInfo.setPath(图标); } else if(“title”.equals(parser.getName())){ String title = parser.nextText(); newsInfo.setTitle(标题); } else if(“content”.equals(parser.getName())){ String des = parser.nextText(); newsInfo.setDes(DES); } else if(“comment”.equals(parser.getName())){ String comment = parser.nextText(); newsInfo.setComment(的Long.parseLong(评论)); } 打破; case XmlPullParser.END_TAG: if(“newsInfo”.equals(parser.getName())){ newsInfos.add(报纸资讯); newsInfo = null; } 打破; } 类型= parser.next(); } 回报新闻 } catch(Exception e){ e.printStackTrace(); 返回null; } } }
6、MyAdapter.java:
导入android.content.Context;
导入android.view.LayoutInflater;
导入android.view.View;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.TextView;
import com.loopj.android.image.SmartImageView;
import java.util.List;
进口cn.edu.bzu.news.R;
进口cn.edu.bzu.news.entity.NewsInfo; public class MyAdapter extends ArrayAdapter <NewsInfo> { private int resourceId; public MyAdapter(Context context,int textViewResourceId,List <NewsInfo> object){ super(context,textViewResourceId,object); resourceId = textViewResourceId; } public View getView(int position,View convertView,ViewGroup parent) { NewsInfo info = getItem(position); layoutInflater inflater =(LayoutInflater)getContext()。getSystemService(Context.LAYOUT_INFLATER_SERVICE); 查看view = inflater.inflate(resourceId,null); SmartImageView imageView =(SmartImageView)view.findViewById(R.id.item_image); TextView tv1 =(TextView)view.findViewById(R.id.item_tv1); TextView tv2 =(TextView)view.findViewById(R.id.item_tv2); TextView tv3 =(TextView)view.findViewById(R.id.item_tv3); imageView.setImageUrl(info.getPath()); tv1.setText(info.getTitle()); tv2.setText(info.getDes()); tv3.setText(将String.valueOf(info.getComment())); 返回视图; } }
7、最后运行效果图:
Android 新闻客户端案例相关推荐
- Android新闻客户端实训-Day1类Day2接口基操
结束了一些事情,本以为可以好好玩一段时间,结果紧接着又来了Android实训,因为这个实训已经开了一段时间了,我中途加入已经不赶趟了,但出于兴趣,准备今天开始跟着老师的笔记的源码从头开始自己摸索着学一 ...
- android新闻客户端报告,简易的Android新闻客户端
学完Android基础之后不知道该怎么办?现在开始实战吧! 现在来看看一款简易的Android新闻客户端是怎么做的,当然,获取网络数据的这一部分我是使用别人做好的本地客户端,然后通过组建本地数据库来使 ...
- android 新闻频道,GitHub - xiyy/TopNews: 一款Android新闻客户端,并提供电视台直播功能...
TopNews 一款Android新闻客户端,独立开发完成,主要功能包括: 1 新闻频道分类,头条.社会.国内.娱乐.体育.军事.科技.财经.时尚 使用ViewPager+FragmentPagerA ...
- android新闻客户端发展趋势,基于Android平台的新闻客户端设计与实现
杨苏雯 摘 要 在Android开发平台上,并在JavaWeb开发的PC端新闻网站的基础上结合现在的需求开发了移动版的新闻客户端App,这个系统设计主要分为用户登录验证模块.新闻列表的显示功能模块以及 ...
- android新闻客户端实验报告,基于Android平台的新闻客户端设计与实现
摘 要 在Android开发平台上,并在JavaWeb开发的PC端新闻网站的基础上结合现在的需求开发了移动版的新闻客户端App,这个系统设计主要分为用户登录验证模块.新闻列表的显示功能模块以及新闻内容 ...
- android新闻客户端实验报告,Android 新闻客户端学习笔记
学习了新闻客户端开发后,有很多是通用的,就把客户端用到的一些做个笔记,已备以后使用,主要用到的知识点有: 1. Android网络编程 2. Android中BaseAdapter的使用 3. ...
- android新闻客户端的实现
制作一个基于聚合新闻数据简单的新闻APP 制作简易新闻App 导航篇 [1.使用Fragment+ViewPager +TabLayout自制简易新闻 app主要框架(一)](https://blog ...
- android新闻客户端(有源码)
有些功能还没实现 源码今天起不再免费提供,评论区有联系方式 目录 一. 题目及要求 2 二. 功能设计 3 三. 详细设计 3 1. 启动页面 3 1)页面显示完跳转 3 2) 启动页面图片全屏化 3 ...
- Android新闻客户端(仿网易)--下
一.摘要继上一篇博客<模仿网易新闻客户端(上)>之后,笔者继续开发我们自己的"网易新闻客户端",由于找不到现成的url新闻链接地址,所以这里就用RSS订阅所提供的url ...
最新文章
- BOM和DOM的区别
- linux装完windows时间长,重装Windows 10上的Linux子系统
- postgre管理员 无法访问表_postgresql – 授予用户对所有表的访问权限
- Tableau2019版本安装步骤
- mybatis sql标签_【1039期】Mybatis面试18问,你想知道的都在这里了!
- 警钟 | 还不会Spring Boot集成JWT,你可能错过了大厂的Office了
- vb.net 判断是否为ip 正则_什么是个人IP科学定位?标准答案来了|ip|直播|科学|ip魔方...
- Atom飞行手册翻译: 2.3 文本选择
- MongoDB安装问题
- artemis服务_artemis小结
- php dropdownlist,下拉列表多级联动dropDownList示例代码
- 全网首发:怎样制作CDKEY(6)-CDKEY破解
- python opencv 中文_OpenCV-Python在图片上输出中文
- # 将日期的符串(Sat Mar 21 08:00:00 CST 2020 )转换为指定字符串日期(yyyy-MM-dd HH:mm:ss)
- 修复计算机用户名密码,win7恢复出厂设置后用户名密码是多少
- 电脑里的文档不小心删除了恢复的方法
- LeetCode-70. 爬楼梯(java)
- git和远程仓库建立连接详细过程
- 全球与中国电解镍市场深度研究分析报告
- 【Java——计算圆面积】
热门文章
- Java 中finalize()方法起什么作用呢?
- Keil5安装和使用小记
- “mvn -version ‘mvn‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件“
- 4个单词,谷歌返回16个SQL注入漏洞
- DNS-域名解析协议
- vector 多维向量定义及其初始化
- java女程序员的出路,持续更新~
- centos7下升级GLIBC2.31
- QR分解、RQ分解与SVD
- devm_ioremap_resource devm_ioremap 区别