zoukankan      html  css  js  c++  java
  • 新闻客户端

    package com.example.news;
    
    import java.io.InputStream;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.xmlpull.v1.XmlPullParser;
    import org.xmlpull.v1.XmlPullParserException;
    
    import com.loopj.android.image.SmartImageView;
    
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.app.Activity;
    import android.util.Xml;
    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<News> list;
        private ListView lv;
        
        Handler handler = new Handler(){
            public void handleMessage(android.os.Message msg) {
                switch (msg.what) {
                case 1:
                    lv = (ListView) findViewById(R.id.lv);
                    lv.setAdapter(new MyAdapter());
                    
                    break;
    
                }
            };
        };
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            //因为这里解析xml文件是在子线程里做的,而lv.setAdapter(new MyAdapter());是在主线程里做的
            //如果主线程先执行的话,子线程xml还没有解析完,就会报空指针异常
            //lv.setAdapter(new MyAdapter());
            getInfo();
            
        }
        private class MyAdapter extends BaseAdapter{
    
            @Override
            public int getCount() {
                // TODO Auto-generated method stub
                return list.size();
            }
    
            @Override
            public Object getItem(int arg0) {
                // TODO Auto-generated method stub
                return null;
            }
    
            @Override
            public long getItemId(int arg0) {
                // TODO Auto-generated method stub
                return 0;
            }
    
            @Override
            public View getView(int arg0, View view, ViewGroup arg2) {
                News news  = list.get(arg0);
                ViewHolder myHolder;
                View v=null;
                if(view == null){
                    v = View.inflate(MainActivity.this, R.layout.item_lv, null);
                    myHolder = new ViewHolder();
                    myHolder.img = (SmartImageView) v.findViewById(R.id.img);
                    myHolder.tv_title = (TextView) v.findViewById(R.id.tv_title);
                    myHolder.tv_show = (TextView) v.findViewById(R.id.tv_show);
                    myHolder.tv_num = (TextView) v.findViewById(R.id.tv_num);
                    v.setTag(myHolder);
                }else{
                    v = view;
                    myHolder = (ViewHolder) v.getTag();
                }
                
                myHolder.tv_title.setText(news.getTitle());
                myHolder.tv_show.setText(news.getDetail());
                myHolder.tv_num.setText(news.getComment()+"条评论");
                myHolder.img.setImageUrl(news.getImage());
                
                return v;
            }
            class ViewHolder{
                SmartImageView img ;
                TextView tv_title ;
                TextView tv_show;
                TextView tv_num;
            }
            
        }
    
        private void getInfo() {
            Thread t = new Thread() {
                @Override
                public void run() {
                    String path = "http://192.168.0.111:8080/images/news.xml";
                    try {
                        URL url = new URL(path);
                        HttpURLConnection conn = (HttpURLConnection) url
                                .openConnection();
                        conn.setRequestMethod("GET");
                        conn.setConnectTimeout(5000);
                        conn.setReadTimeout(5000);
                        if (conn.getResponseCode() == 200) {
                            InputStream in = conn.getInputStream();
                            //pull解析xml文件
                            parseNews(in);
    
                        } else {
    
                        }
    
                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
    
            };
            t.start();
        }
    
        private void parseNews(InputStream in) {
            XmlPullParser xp = Xml.newPullParser();
            try {
                // 初始化
                xp.setInput(in, "utf-8");
                // 返回节点类型
                int type = xp.getEventType();
                News news = null;
                while (type != XmlPullParser.END_DOCUMENT) {
                    switch (type) {
                    case XmlPullParser.START_TAG:
                        if ("newslist".equals(xp.getName())) {
                            list = new ArrayList<News>();
                        } else if ("news".equals(xp.getName())) {
                            news = new News();
                        } else if ("title".equals(xp.getName())) {
                            news.setTitle(xp.nextText());
                        } else if ("detail".equals(xp.getName())) {
                            news.setDetail(xp.nextText());
                        } else if ("comment".equals(xp.getName())) {
                            news.setComment(xp.nextText());
                        } else if ("image".equals(xp.getName())) {
                            news.setImage(xp.nextText());
                        }
    
                        break;
                    case XmlPullParser.END_TAG:
                        if ("news".equals(xp.getName())) {
                            list.add(news);
                        }
                        break;
    
                    }
    
                    // 移动到下一个节点
                    type = xp.next();
                }
    //            for (int i = 0; i < list.size(); i++) {
    //                
    //                System.out.println(list.get(i).toString());
    //            }
                //必须得在解析之后才能给listview设置适配器
                handler.sendEmptyMessage(1);
                
    
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    
    }
    <?xml version="1.0" encoding="UTF-8"?>
    -<newslist> -<news> <title>黑马52期就业快报</title> <detail>热烈祝贺黑马52期平均薪水突破13k</detail> <comment>15687</comment> <image>http://192.168.0.111:8080/images/6.jpg</image> </news> -<news> <title>程序员因写代码太乱被杀害</title> <detail>凶手是死者同事,维护死者代码时完全看不懂而痛下杀手</detail> <comment>16359</comment> <image>http://192.168.0.111:8080/images/7.jpg</image> </news> -<news> <title>产品经理因频繁改需求被杀害</title> <detail>凶手是一名程序员,因死者对项目需求频繁改动而痛下杀手</detail> <comment>14112</comment> <image>http://192.168.0.111:8080/images/7.jpg</image> </news> -<news> <title>3Q大战宣判: 腾讯获赔500万</title> <detail>最高法驳回360上诉, 维持一审宣判.</detail> <comment>6427</comment> <image>http://192.168.0.111:8080/images/1.jpg</image> </news> -<news> <title>今日之声:北大雕塑被戴口罩</title> <detail>市民: 因雾霾起诉环保局; 公务员谈"紧日子": 坚决不出去.</detail> <comment>681</comment> <image>http://192.168.0.111:8080/images/2.jpg</image> </news> -<news> <title>奥巴马见是装蒜</title> <detail>外文局: 国际民众认可中国大国地位;法院: "流量清零"未侵权.</detail> <comment>1359</comment> <image>http://192.168.0.111:8080/images/3.jpg</image> </news> -<news> <title>轻松一刻: 我要沉迷学习不自拔</title> <detail>放假时我醒了不代表我起床了, 如今我起床了不代表我醒了!</detail> <comment>11616</comment> <image>http://192.168.0.111:8080/images/4.jpg</image> </news> -<news> <title>男女那些事儿</title> <detail>"妈, 我在东莞被抓, 要2万保释金, 快汇钱到xxx!"</detail> <comment>10339</comment> <image>http://192.168.0.111:8080/images/5.jpg</image> </news> -<news> <title>赵帅哥语录一</title> <detail>少壮不努力,老大做IT</detail> <comment>14612</comment> <image>http://192.168.0.111:8080/images/8.jpg</image> </news> -<news> <title>赵帅哥语录二</title> <detail>问君能有几多愁,恰似调完代码改需求</detail> <comment>13230</comment> <image>http://192.168.0.111:8080/images/8.jpg</image> </news> -<news> <title>赵帅哥语录三</title> <detail>觉得我帅的人工资一般都比较高</detail> <comment>9928</comment> <image>http://192.168.0.111:8080/images/8.jpg</image> </news> -<news> <title>今日之声:北大雕塑被戴口罩</title> <detail>市民: 因雾霾起诉环保局; 公务员谈"紧日子": 坚决不出去.</detail> <comment>681</comment> <image>http://192.168.0.111:8080/images/2.jpg</image> </news> -<news> <title>奥巴马是装蒜</title> <detail>外文局: 国际民众认可中国大国地位;法院: "流量清零"未侵权.</detail> <comment>1359</comment> <image>http://192.168.0.111:8080/images/3.jpg</image> </news> </newslist>
    package com.example.news;
    
    public class News {
        private String title;
        private String detail;
        private String comment;
        private String image;
        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 String getComment() {
            return comment;
        }
        public void setComment(String comment) {
            this.comment = comment;
        }
        public String getImage() {
            return image;
        }
        public void setImage(String image) {
            this.image = image;
        }
        @Override
        public String toString() {
            return "News [title=" + title + ", detail=" + detail + ", comment="
                    + comment + ", image=" + image + "]";
        }
        
    }
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
    
        <com.loopj.android.image.SmartImageView
            android:id="@+id/img"
            android:layout_width="90dp"
            android:layout_height="90dp"
            android:src="@drawable/ic_launcher" />
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical" >
    
            <TextView
                android:id="@+id/tv_title"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:singleLine="true"
                android:text="阿是讲道理费劲啊实例叠加飞拉萨的减肥蓝色"
                android:textSize="25sp" />
    
    
            <TextView
                android:id="@+id/tv_show"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:lines="2"
                android:text="阿是讲道理费劲啊实例叠sfasfasdfasdasdfasdfasdfas加飞拉萨的减肥蓝色"
                android:textColor="@android:color/darker_gray" />
            
            <TextView
                android:id="@+id/tv_num"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:singleLine="true"
                android:text="1000条评论"
                android:textColor="#ff0000" 
                android:gravity="right"/>
        </LinearLayout>
    
    </LinearLayout>
  • 相关阅读:
    局域网共享磁盘或文件夹访问
    Android实例-退出程序
    delphi 合并两个 Wav 文件流的函数
    Delphi数据库处理
    cxgrid的FINDPANEL编程
    Python之路【目录】
    Delphi TreeView – 自动展开树形结构
    Delphi TreeView – 自动给标题上加图片
    Delphi 发送邮件 通过Office Outlook
    Delphi Create(nil), Create(self), Create(Application)的区别
  • 原文地址:https://www.cnblogs.com/84126858jmz/p/4931674.html
Copyright © 2011-2022 走看看