网易新闻

package com.xh.tx.news;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import com.loopj.android.image.SmartImageView;
import com.xh.tx.entity.News;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.util.Xml;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

protected static final int FAILED = 0;

protected static final int SUCCESS = 1;
private final String TAG = "MainActivity";

List<News> list;
private Handler handler = new Handler(){

@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);

if(msg.what == SUCCESS)
{
list = (List<News>) msg.obj;
ListView listview = (ListView) findViewById(R.id.lv_content);

listview.setAdapter(new ShowNewsAdapter());
}else
{
Toast.makeText(MainActivity.this, "请求网络数据失败", 0).show();
}

}

};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

init();

}

//完成从网络上下载数据,并解析成list,供ShowNewsAdapter显示调用
private void init()
{

new Thread(new Runnable() {

@Override
public void run() {
//用HttpClient 的get方式去请求数据
HttpClient client = new DefaultHttpClient();

HttpGet get = new HttpGet("http://10.0.2.2:8080/NetEaseServer/new.xml");

try {

HttpResponse response = client.execute(get);
int statuscode = response.getStatusLine().getStatusCode();

if(200 == statuscode)
{
//如果状态等于200,解析传递回来的流
InputStream in = response.getEntity().getContent();
list = getNewsFromInputStream(in);

Message message = new Message();
if(null == list)
{
message.what = FAILED;
}else{
message.what = SUCCESS;
message.obj = list;
}

handler.sendMessage(message);
}

} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}

}).start();

}
//解析xml
private List<News> getNewsFromInputStream(InputStream in)
{
XmlPullParser parser = Xml.newPullParser();

List<News> list = null;

try {
parser.setInput(in, "utf-8");

int eventType = parser.getEventType();
String name = null;
News news = null;

while(eventType != parser.END_DOCUMENT)
{
name = parser.getName();

switch (eventType) {
case XmlPullParser.START_DOCUMENT:
list = new ArrayList<News>();
break;
case XmlPullParser.START_TAG:
if("new".equals(name))
{
news = new News();
}else if("title".equals(name))
{
news.setTitle(parser.nextText());
}else if("detail".equals(name))
{
news.setDetail(parser.nextText());
}else if("comment".equals(name))
{
news.setComment(Integer.parseInt(parser.nextText()));
}else if("image".equals(name))
{
news.setImageurl(parser.nextText());
}
break;
case XmlPullParser.END_TAG:
if("new".equals(name))
{
list.add(news);
}
break;
default:
break;
}
eventType = parser.next();
}

} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

return list;
}

class ShowNewsAdapter extends BaseAdapter
{
@Override
public int getCount() {
return list.size();
}

@Override
public Object getItem(int position) {
return null;
}

@Override
public long getItemId(int position) {
return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent)
{
View view = null;

if(convertView != null)
{
view = convertView;
}else
{
LayoutInflater flater = MainActivity.this.getLayoutInflater();

view = flater.inflate(R.layout.list_item, null);
}

ImageView image = (ImageView) view.findViewById(R.id.img);
TextView tv_title = (TextView) view.findViewById(R.id.tv_title);
TextView tv_content = (TextView) view.findViewById(R.id.tv_content);
TextView tv_common = (TextView) view.findViewById(R.id.tv_common);

News news = list.get(position);
Log.i(TAG, news.getImageurl() + "");

image.setImageURI(Uri.parse(news.getImageurl()));
tv_title.setText(news.getTitle());
tv_content.setText(news.getDetail());
tv_common.setText(news.getComment() + "");

return view;
}

}
}

//News

package com.xh.tx.entity;

public class News
{
private int id;
private String title;
private String detail;
private Integer comment;
private String imageurl;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDetail() {
return detail;
}
public void setDetail(String detail) {
this.detail = detail;
}
public Integer getComment() {
return comment;
}
public void setComment(Integer comment) {
this.comment = comment;
}
public String getImageurl() {
return imageurl;
}
public void setImageurl(String imageurl) {
this.imageurl = imageurl;
}
@Override
public String toString() {
return "News [id=" + id + ", title=" + title + ", detail=" + detail
+ ", comment=" + comment + ", imageurl=" + imageurl + "]";
}
public News() {
super();
}
public News(int id, String title, String detail, Integer comment,
String imageurl) {
super();
this.id = id;
this.title = title;
this.detail = detail;
this.comment = comment;
this.imageurl = imageurl;
}
public News(String title, String detail, Integer comment, String imageurl) {
super();
this.title = title;
this.detail = detail;
this.comment = comment;
this.imageurl = imageurl;
}

}

时间: 2024-10-27 13:11:58

网易新闻的相关文章

【黑马Android】(06)使用HttpClient方式请求网络/网易新闻案例

使用HttpClient方式请求网络 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"

可以显示图片的类似网易新闻的头部滚动条(转)

声明:原文来自  http://www.jianshu.com/p/ce4909bc4752 前言, 最近发现一类效果类似网易新闻头部滚动条的效果,不过是可以显示图片(上, 中, 左, 右)和文字, 最近在比较闲的时候顺带把这些效果也一并实现了, 那么这一类的各种效果大致上就实现了Demo地址,供有需要的朋友可以参考 增加效果 图片在左边 图片在右边.gif 图片在上面.gif 只显示图片.gif 原来的效果 --- 只显示文字 oc版滚动示例.gif 关于实现部分, 新增显示的图片的效果, 其

Python爬虫实战(三):爬网易新闻

代码: # _*_ coding:utf-8 _*_ import urllib2 import re #import sys #reload(sys) #sys.setdefaultencoding('utf-8') class Tool: removeImg = re.compile(r'<p class="f_center".*?</p>') removeAddr = re.compile(r'<a.*?>|</a>') replaceL

网易新闻部分框架

一 网易功能图 二 需要解决的问题 1> 搭建界面,设置标题 2> 处理标题按钮点击事件,处理常见的bug 3> 监听内容的滚动 4> 滚动范围的判断 5> 字体大小和颜色的渐变 三 内容显示和标题显示搭建 1 思路: 由总体app的效果,我们可以看出,标题和内容界面都是可以滚动的,而且标题还可以点击 2 具体方案:采用两个UIScrollView来实现. 3 显示内容的代码: #pragma mark - 创建控制器内容的scrollView - (void)setUpCh

网易新闻首页iOS

// //  ViewController.m //  wyy // //  Copyright © 2016年 zm. All rights reserved. // #import "ViewController.h" #import "ZMViewController.h" #import "ZMLabel.h" @interface ViewController ()<UIScrollViewDelegate> @proper

关于仿网易新闻中详细页图文混排功能的实现

最近在了解关于新闻内容的图文混排的效果,网上有人开源一个仿网易新闻的代码,本文就是简单记录学习其详细页面显示的效果实现: 下载地址:https://github.com/dsxNiubility/SXNews 效果图: 其原理:通过网络请求获得相关的信息,再通过手机端进行拼HTML,然后在WebView进行展示,此处还对文章中的图片增加点击效果,可以保存到相册中:文章的样式已经存在项目中,直接去调用: 1:首先了解两个相关的实体对象,一个是新闻的主体内容,另外一个就是图片的相关信息实体: 1:主

网易新闻控件的创建,scrollView和viewGroup的学习,和up事件后模拟页面回到固定位置

1.viewGroup可以添加控件,也可以用<include layout="@layout/name">添加xml布局文件,在本次实验中将新闻的menu(scrollView布局文件)和正文(mainnews)加入到继承ViewGroup的控件中,但不明白为什么scrollview的宽度和下滑属性没了.导致不能下滑. 一旦发现空间几部分组成就继承viewgroup ,然后重写onmeasure方法,在里面测量所有的孩子,然后重写layout方法布局这些孩子view的位置.

网易新闻页面信息抓取 -- htmlagilitypack搭配scrapysharp

最近在弄网页爬虫这方面的,上网看到关于htmlagilitypack搭配scrapysharp的文章,于是决定试一试~ 于是到https://www.nuget.org/packages/ScrapySharp去看看, 看到这句下载提示:To install ScrapySharp, run the following command in the Package Manager Console PM> Install-Package ScrapySharp 接下去我就去找package man

仿网易新闻导航栏PagerSlidingTabStrip源码分析

转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持!   前言 最近工作比较忙,所以现在才更新博文,对不住大家了~!言归正传,我们来说说这个PagerSlidingTabStrip,它是配合ViewPager使用的导航栏,网易新闻就是用的这个导航,我们仔细观察这个导航栏不仅他是跟着ViewPager滑动而滑动,而且指示器还会随着标题的长度而动态的变化长度. · 下载地址: Github:https://github.com/astuet

IOS开发--仿制网易新闻

学习来源:<快速集成App中顶部标题滚动条> 效果: 根据这个网易新闻的界面,需求分析: 需要的对象: 1.导航控制器默认会生成的导航条,上面可以设置title(当然也可以另外自定义View设置导航条title) 2.切换页面的标题滚动区是一个ScrollView,在这个ScrollView上面添加六个UIButton,按顺序UIButton的文字是“头条.热点.视频.社会.订阅.科技”六个标题 3.切换内容的内容滚动区是一个ScrollView,在这个ScrollView上面分别和标题滚动区