一丶一个简单的访问服务器(访问网易新闻客户端)点击加载新闻:首页的布局文件

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:onClick="click"

android:text="点击显示网易新闻" />

android:id="@+id/lv"

android:layout_width="match_parent"

android:layout_height="match_parent"

>

listView中的布局文件:

android:layout_width="match_parent"

android:layout_height="match_parent" >

android:id="@+id/iv"

android:layout_width="80dp"

android:layout_height="80dp" />

android:id="@+id/tvTitle"

android:layout_toRightOf="@id/iv"

android:layout_marginLeft="5dp"

android:textSize="16dp"

android:textColor="#000000"

android:textStyle="bold"

android:text="我是标题"

android:layout_width="wrap_content"

android:layout_height="wrap_content" />

android:id="@+id/tvDiscription"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_below="@id/tvTitle"

android:layout_alignLeft="@id/tvTitle"

android:textSize="12dp"

android:maxLines="3"

android:textColor="#99000000"

android:text="我是内容"

/>

android:id="@+id/tvInfo"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="我是跟帖"

android:textSize="10dp"

android:layout_marginRight="5dp"

android:layout_alignParentRight="true"

android:layout_alignBottom="@id/iv"

/>

2.MainActivity中代码

public void click(View view){

new Thread(){

public void run() {

//1.创建网络地址对象

String path = "http://192.168.1.184:8080/news/news.xml" ;//服务端地址

try {

URL url = new URL(path) ;

//打开连接

HttpURLConnection http = (HttpURLConnection) url.openConnection() ;

http.setConnectTimeout(5000) ;

//拿到服务器返回的状态吗

int code = http.getResponseCode() ;

//判断状态吗

if(code == 200){

//流中是xml文件

InputStream is = http.getInputStream()  ;

list = StreamUtils.getNewsList(is) ;//解析XML放回的list集合

runOnUiThread(new Runnable() {

//将流中的xml文件解析成集合

@Override

public void run() {

lv.setAdapter(new MyAdapter()) ;

}

}) ;

}else{

runOnUiThread(new Runnable() {

@Override

public void run() {

Toast.makeText(MainActivity.this, "请求失败", 0).show() ;

}

}) ;

}

} catch (Exception e) {

e.printStackTrace();

runOnUiThread(new Runnable() {

@Override

public void run() {

Toast.makeText(MainActivity.this, "网络不通,请检查网络是否开启", 0).show() ;

}

}) ;

}

};

}.start() ;

}

class MyAdapter extends BaseAdapter{

@Override

public int getCount() {

return list.size();

}

@Override

public Object getItem(int position) {

// TODO Auto-generated method stub

return null;

}

@Override

public long getItemId(int position) {

// TODO Auto-generated method stub

return 0;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

//拿到布局填充器

LayoutInflater inflater = LayoutInflater.from(MainActivity.this) ;

//加载布局文件

View view = null ;

if(convertView == null){

view = inflater.inflate(R.layout.news, null) ;

}else{

view = convertView ;

}

//拿到布局文件中的各个控件

TextView tvTitle = (TextView) view.findViewById(R.id.tvTitle) ;

TextView tvDesctiption = (TextView) view.findViewById(R.id.tvDiscription) ;

TextView tvInfo = (TextView) view.findViewById(R.id.tvInfo) ;

SmartImageView iv = (SmartImageView) view.findViewById(R.id.iv) ;

//拿到新闻对象

NewsItem news = list.get(position) ;

tvTitle.setText(news.getTitle()) ;

//设置图片

iv.setImageUrl(news.getImage()) ;

tvDesctiption.setText(StreamUtils.change(news.getDescription())) ;

if(news.getType().equals("1")){

tvInfo.setText("跟帖:" + news.getConnent()) ;

}else if(news.getType().equals("2")){

tvInfo.setText("专题") ;

tvInfo.setTextColor(getResources().getColor(android.R.color.holo_blue_bright)) ;

}else if(news.getType().equals("3")){

tvInfo.setText("视频") ;

tvInfo.setTextColor(getResources().getColor(android.R.color.holo_red_light)) ;

}

return view;

}

}

}

3.解析新闻XML的工具类

public static List getNewsList(InputStream is) {

List list = new ArrayList();

try {

// 创建xml的解析器

XmlPullParser pull = Xml.newPullParser();

// 设置要解析的数据的编码

pull.setInput(is, "utf-8");

// 拿到事件类型

int type = pull.getEventType();

// 循环解析数据

NewsItem item = null;

while (type != XmlPullParser.END_DOCUMENT) {

switch (type) {

case XmlPullParser.START_TAG:

if("item".equals(pull.getName())){

item = new NewsItem() ;

}else if("title".equals(pull.getName())){

item.setTitle(pull.nextText()) ;

}else if("description".equals(pull.getName())){

item.setDescription(pull.nextText()) ;

}else if("p_w_picpath".equals(pull.getName())){

item.setImage(pull.nextText()) ;

}else if("type".equals(pull.getName())){

item.setType(pull.nextText()) ;

}else if("comment".equals(pull.getName())){

item.setConnent(pull.nextText()) ;

}

break;

case XmlPullParser.END_TAG:

if("item".equals(pull.getName())){

list.add(item) ;

item = null ;

}

break;

}

//拿到下一个事件

type = pull.next() ;

}

} catch (Exception e) {

e.printStackTrace();

}

return list ;

}

4.肯定有一个新闻对象News(要创建一个bean包中有News类封装新闻消息)

5.别忘了记得添加访问internet权限

6.服务端创建的News(附件里面有)

注:要加载图片我们要用到smartp_w_picpathview加载图片(smrtImageview包附件里面)

android访问服务器文件,访问服务器(加载图片)相关推荐

  1. VC从文件中加载图片

    用MFC做GDI开发的朋友肯定熟悉CBitmap类,该类封装了HBITMAP对象,简化了关于HBITMAP的API操作,如LoadBitmap方法可直接加载资源中指定ID的图片,但是很多情况下我们需要 ...

  2. Android实现ListView异步加载图片

    转: http://www.iteye.com/topic/685986 ListView异步加载图片是非常实用的方法,凡是是要通过网络获取图片资源一般使用这种方法比较好,用户体验好,下面就说实现方法 ...

  3. Android之ListView异步加载图片且仅显示可见子项中的图片

    折腾了好多天,遇到 N 多让人崩溃无语的问题,不过今天终于有些收获了,这是实验的第一版,有些混乱,下一步进行改造细分,先把代码记录在这儿吧. 网上查了很多资料,发现都千篇一律,抄来抄去,很多细节和完整 ...

  4. Android实现ListView异步加载图片总结

    参考自http://blog.csdn.net/wanglong0537/article/details/6334005# http://www.cnblogs.com/slider/archive/ ...

  5. Android中使用ImageLoader加载图片

    Android上让人头疼的莫过于从网络上获取图片,然后显示图片,最后还要考虑到图片的回收问题,这之间只要有任何一个环节有问题都可能直接OOM.尤其在需要展示图片的列表页面,会加载大量网络上的图片,每当 ...

  6. android 实现异步加载图片,Android中ImageView异步加载图片类

    本源码是从网络找到经修改以方便直接调用感觉用着还可以 首先在项目中添加一个专门加载图片的类AsyncImageLoaderpackage com.demo.core; import java.io.I ...

  7. android调用h5预加载图片,图片预加载 preload

    图片预加载 HTML5学堂:2014年年初的时候,曾经在自己的博客"独行冰海"里写过关于图片预加载和懒加载的博文,当时的文章当中没有写什么关于预载的代码范例,当前打算把预载和懒载分 ...

  8. Android之使用SmartImageView加载图片

    在网络编程的时候,我们总要加载图片,往往拿到的不是图片,而是图片的链接,这时候我们就要使用SmartImageView来加载图片了 这是一种便捷的方式~ 那如何使用呢~ 看下面代码: public c ...

  9. android调用h5预加载图片,使用HTML5的页面资源预加载(Link prefetch)功能加速你的页面加载速度...

    不管是浏览器的开发者还是普通web应用的开发者,他们都在做一个共同的努力:让Web浏览有更快的速度感觉.有很多已知的技术都可以让你的网站速度变得更快:使用CSS sprites,使用图片优化工具,使用 ...

  10. Android 开发 之 glide加载图片

    1.简介 (1)使用简单 (2)可配置度高,自适应程度高 (3)支持常见图片格式 Jpg png gif webp (4)支持多种数据源  网络.本地.资源.Assets 等 (5)高效缓存策略   ...

最新文章

  1. (转载)虚幻引擎3--9掌握虚幻技术UnrealScript 预处理器
  2. 013_SpringBoot视图层技术thymeleaf-迭代遍历
  3. 《Adobe Illustrator CS4中文版经典教程》—第0课0.11节将外观属性存储为图形样式...
  4. HDU 4602 - Partition
  5. c++ 中pair类模板的用法详解
  6. 《最强蜗牛》运营分析:这个奇葩放置游戏的乐趣在哪里?
  7. 腾讯招.NET5,居然要求精通MySQL,而不是SQLServer!
  8. 山东省第八届 ACM 省赛 sum of power(SDUT 3899)
  9. 使用RDLC报表(四)--钻取式报表
  10. SSM错误:Exception in thread “main“ java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletReque
  11. 监视和排错客户端性能和连接性
  12. postman调试网站API接口提示需要先登录怎么办
  13. 这5款功能强大、堪称最良心的浏览器,简直好用极了!
  14. riskv的linux模拟环境,开启你RISC-V的开发之旅-RISC-V的linux模拟环境搭建整理和总结-EDA365电子论坛通信数码-人工智能-计算机-半导体-手机家电消费电子硬件门户网站...
  15. 手机端API框架流程(学习笔记)
  16. 多图体验:最强大的Win8.1开始菜单Classic Shell 3.9.1
  17. 自学HarmonyOS应用开发(51)- 获取瓦片地图数据(续)
  18. 服务器被入侵,执行了2个非常危险的命令
  19. opengl SwapBuffers的等待,虚伪的FPS
  20. 开源为改进服务器、网络、存储及加速技术提供了行之有效的新途径

热门文章

  1. java抢红包算法_Java抢红包的红包生成算法
  2. 华为云位居IDC中国大数据平台市场研究报告第一
  3. 可视对讲系统服务器连接失败,可视对讲系统呼叫分机、门口机不通是什么问题?...
  4. 鸟叔的linux私房菜:第0章 计算机概论学习笔记(Learning Notes for Basic Computer Theory)
  5. 律师要用到什么计算机技巧,【执业技巧】律师如何优雅地使用苹果电脑?这7款工具很有用...
  6. 2020国开c语言程序设计1075,中央电大秋季C语言程序设计期末试卷及答案代码1075,01(7页)-原创力文档...
  7. 小米6怎样打开位置服务器,小米手环6gps定位功能在哪打开?经常无法定位怎么办...
  8. python实现树莓派监控_树莓派上安装pyaudio 及 对声音实时监控
  9. GNU Bison 2.1 中文手册
  10. Alpha阶段敏捷冲刺⑤