如何做一个简易的新闻客户端-创新互联

1,下载一个服务端 tomcat

公司主营业务:成都网站建设、网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联建站是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联建站推出柴桑免费做网站回馈大家。

下载后开始运行,将需要浏览的东西,放在webapps-root文件下

这里假设有一个xml小文件,接下来就开始上代码了,

在同一个包下给mainactivity创造两个class文件,一个用来解析xml文件(解析方式多种,有兴趣可以上网查阅资料),一个用于存放数据

1,存放数据:

package com.example.xinwen;

public class News {

private String city;

private String temp;

private String wind;

private String pm250;

private String p_w_picpath;

public String getCity() {

return city;

}

public void setCity(String city) {

this.city = city;

}

public String getTemp() {

return temp;

}

public void setTemp(String temp) {

this.temp = temp;

}

public String getWind() {

return wind;

}

public void setWind(String wind) {

this.wind = wind;

}

public String getPm250() {

return pm250;

}

public void setPm250(String pm250) {

this.pm250 = pm250;

}

public String getImage() {

return p_w_picpath;

}

public void setImage(String p_w_picpath) {

this.p_w_picpath = p_w_picpath;

}

}

2,解析xml文件

(1)假设xml文件长这样,将它放进tomcat里面即可

    

   北京

25°

http://192.168.1.101:8080/img/a.jpg

1

300

   郑州

20°

http://192.168.1.101:8080/img/b.jpg

2

300

   长春

10°

http://192.168.1.101:8080/img/c.jpg

3

100

   沈阳

20°

http://192.168.1.101:8080/img/d.jpg

3

50

(2)开始解析

package com.example.xinwen;

import java.io.InputStream;

import java.util.ArrayList;

import java.util.List;

import org.xmlpull.v1.XmlPullParser;

import org.xmlpull.v1.XmlPullParserException;

import android.util.Xml;

public class XmlPasser {

//解析xml的业务方法

public static List parserXml(InputStream in) throws Exception{

List newsLists=null;

News news=null;

//获取xml解析器

XmlPullParser parser=Xml.newPullParser();

//设置解析器,要解析的内容

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

//获取要解析的事件类型

int type=parser.getEventType();

//不得向下解析

while(type!=XmlPullParser.END_DOCUMENT){

switch(type){

case XmlPullParser.START_TAG://解析开始节点

//[6]具体判断一下是哪个标签

if("weather".equals(parser.getName())){

newsLists=new ArrayList();

}else if("channel".equals(parser.getName())){

news=new News();

}else if("city".equals(parser.getName())){

news.setCity(parser.nextText());

}else if("temp".equals(parser.getName())){

news.setTemp(parser.nextText());

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

news.setImage(parser.nextText());

}else if("wind".equals(parser.getName())){

news.setWind(parser.nextText());

}else if("pm250".equals(parser.getName())){

news.setPm250(parser.nextText());

}

break;

case XmlPullParser.END_TAG://解析结束标签

if("channel".equals(parser.getName())){

//把Javabean添加到集合

newsLists.add(news);

}

break;

}

//不停向下解析

type=parser.next();

}

return newsLists;

}

}

3,好了副class文件制作好了,就开始在mainactivity中制作正文了

package com.example.xinwen;

import android.os.Bundle;

import java.io.IOException;

import java.io.InputStream;

import java.net.HttpURLConnection;

import java.net.MalformedURLException;

import java.net.ProtocolException;

import java.net.URL;

import java.util.List;

import android.app.Activity;

import android.view.Menu;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.ImageView;

import android.widget.ListView;

import android.widget.TextView;

public class MainActivity extends Activity {

private List newsLists;

private ListView lv;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

lv = (ListView) findViewById(R.id.lv);

//[2]准备listview要显示的数据,去服务器取数据进行封装

initListData();

}

//准备listview的数据

private void initListData(){

new Thread(){

public void run(){

try {

//[2]去服务器取数据http://192.168.1.104:8080/weather.xml

String path="http://192.168.1.101:8080/weather.xml";

               //小白强烈注意,192.168.1.101使用的是本地ip,至于如何查看本地ip 上网百度

//[2.2]创建URL 对象指定我们要访问的 网址(路径)

URL url = new URL(path);

//[2.3]拿到httpurlconnection对象 用于发送或者接收数据

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

//[2.4]设置发送get请求

conn.setRequestMethod("GET");//get要求大写 默认就是get请求

//[2.5]设置请求超时时间

conn.setConnectTimeout(5000);

//[2.6]获取服务器返回的状态码

int code = conn.getResponseCode();

//[2.7]如果code == 200 说明请求成功

if(code==200){

//[2.8]获取服务器返回的数据  是以流的形式返回的 由于把流转换成字符串是一个非常常见的操作 所以我抽出一个工具类(utils)

InputStream in = conn.getInputStream();

newsLists = XmlPasser.parserXml(in);

runOnUiThread(new Runnable(){

@Override

public void run() {

// TODO 自动生成的方法存根

//更新ui把数据展示到子线程

lv.setAdapter(new MyAdapter());

}

});

}

} catch (Exception e) {

// TODO 自动生成的 catch 块

e.printStackTrace();

}

};}.start();

}

private class MyAdapter extends BaseAdapter{

@Override

public int getCount() {

// TODO 自动生成的方法存根

return newsLists.size();

}

@Override

public Object getItem(int arg0) {

// TODO 自动生成的方法存根

return null;

}

@Override

public long getItemId(int arg0) {

// TODO 自动生成的方法存根

return 0;

}

@Override

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

View view;

if(convertView==null){

view=View.inflate(getApplicationContext(), R.layout.item, null);

}else{

view =convertView;

}

//找到控件显示集合里面的数据

ImageView iv_icon=(ImageView) view.findViewById(R.id.iv_icon);

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

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

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

//展示数据

tv_title.setText(newsLists.get(position).getCity());

tv_desc.setText(newsLists.get(position).getTemp());

String typee=newsLists.get(position).getWind();

String comment=newsLists.get(position).getPm250();

int type=Integer.parseInt(typee);

switch(type){

case 1:

tv_type.setText(comment+"国内");

break;

case 2:

tv_type.setText("跟帖");

break;

case 3:

tv_type.setText("国外");

break;

}

return view;

}

}

}

至此src下的正文部分结束

我们接下来要来控制按钮这些内容了,在res-layout下创建一个子xml

  android:layout_width="match_parent"

  android:layout_height="match_parent" >

  

    android:id="@+id/iv_icon"

    android:layout_width="80dp"

    android:layout_height="80dp"

    android:src="@drawable/ic_launcher" />

  

    android:id="@+id/tv_title"

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:layout_marginTop="3dp"

    android:layout_toRightOf="@+id/iv_icon"

    android:ellipsize="end"

    android:singleLine="true"

    android:text="sadasaddsasdasdada"

    android:textColor="#000000"

    android:textSize="18sp" />

  

    android:id="@+id/tv_desc"

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:layout_alignBottom="@+id/iv_icon"

    android:layout_below="@id/tv_title"

    android:layout_marginTop="6dp"

    android:layout_toRightOf="@id/iv_icon"

    android:ellipsize="end"

    android:maxLines="2"

    android:text="啊结果了敬爱个路口就爱看的两个件上的故事格式的公共的十大歌手大事"

    android:textColor="#999999"

    android:textSize="14sp" />

  

    android:id="@+id/tv_type"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:layout_alignBottom="@id/iv_icon"

    android:layout_alignParentRight="true"

    android:layout_marginRight="3dp"

    android:text="跟帖"

    android:textColor="#ff0000"

    android:textSize="14sp" />

这样就制作成功了,最后勿忘给安卓adt一个上网许可(百度)

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网页标题:如何做一个简易的新闻客户端-创新互联
网站链接:http://azwzsj.com/article/diiheo.html