码迷,mamicode.com
首页 > 其他好文 > 详细

网易新闻

时间:2015-11-02 19:19:00      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:

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;
}


}

 

网易新闻

标签:

原文地址:http://www.cnblogs.com/wt-w/p/4930837.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!