android 75 新闻列表页面

new.xml

<?xml version="1.0" encoding="UTF-8" ?>
<newslist><news><title>黑马52期就业快报</title><detail>热烈祝贺黑马52期平均薪水突破13k</detail><comment>15687</comment><image>http://192.168.1.100:8080/images/6.jpg</image></news><news><title>程序员因写代码太乱被杀害</title><detail>凶手是死者同事,维护死者代码时完全看不懂而痛下杀手</detail><comment>16359</comment><image>http://192.168.1.100:8080/images/7.jpg</image></news><news><title>产品经理因频繁改需求被杀害</title><detail>凶手是一名程序员,因死者对项目需求频繁改动而痛下杀手</detail><comment>14112</comment><image>http://192.168.1.100:8080/images/7.jpg</image></news><news><title>3Q大战宣判: 腾讯获赔500万</title><detail>最高法驳回360上诉, 维持一审宣判.</detail><comment>6427</comment><image>http://192.168.1.100:8080/images/1.jpg</image></news><news><title>今日之声:北大雕塑被戴口罩</title><detail>市民: 因雾霾起诉环保局; 公务员谈"紧日子": 坚决不出去.</detail><comment>681</comment><image>http://192.168.1.100:8080/images/2.jpg</image></news><news><title>奥巴马见是装蒜</title><detail>外文局: 国际民众认可中国大国地位;法院: "流量清零"未侵权.</detail><comment>1359</comment><image>http://192.168.1.100:8080/images/3.jpg</image></news><news><title>轻松一刻: 我要沉迷学习不自拔</title><detail>放假时我醒了不代表我起床了, 如今我起床了不代表我醒了!</detail><comment>11616</comment><image>http://192.168.1.100:8080/images/4.jpg</image></news><news><title>男女那些事儿</title><detail>"妈, 我在东莞被抓, 要2万保释金, 快汇钱到xxx!"</detail><comment>10339</comment><image>http://192.168.1.100:8080/images/5.jpg</image></news><news><title>赵帅哥语录一</title><detail>少壮不努力,老大做IT</detail><comment>14612</comment><image>http://192.168.1.100:8080/images/8.jpg</image></news><news><title>赵帅哥语录二</title><detail>问君能有几多愁,恰似调完代码改需求</detail><comment>13230</comment><image>http://192.168.1.100:8080/images/8.jpg</image></news><news><title>赵帅哥语录三</title><detail>觉得我帅的人工资一般都比较高</detail><comment>9928</comment><image>http://192.168.1.100:8080/images/8.jpg</image></news><news><title>今日之声:北大雕塑被戴口罩</title><detail>市民: 因雾霾起诉环保局; 公务员谈"紧日子": 坚决不出去.</detail><comment>681</comment><image>http://192.168.1.100:8080/images/2.jpg</image></news><news><title>奥巴马见是装蒜</title><detail>外文局: 国际民众认可中国大国地位;法院: "流量清零"未侵权.</detail><comment>1359</comment><image>http://192.168.1.100:8080/images/3.jpg</image></news>
</newslist>

 主页面:

<RelativeLayout 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"tools:context=".MainActivity" ><ListView android:id="@+id/lv"android:layout_width="match_parent"android:layout_height="match_parent"></ListView></RelativeLayout>

条目:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content" ><com.loopj.android.image.SmartImageView android:id="@+id/iv"android:layout_width="90dp"android:layout_height="70dp"android:src="@drawable/ic_launcher"android:layout_centerVertical="true"        竖直居中/><TextView android:id="@+id/tv_title"android:layout_width="match_parent"android:layout_height="wrap_content"   和包裹内容一样,就是和里面的内容一样android:text="这是大标题志哥教你上塑料adasfsadfdsfdsgsd"android:layout_toRightOf="@id/iv"        右边android:textSize="22sp"android:singleLine="true"    标题不要换行,多余部分用...显示/><TextView android:id="@+id/tv_detail"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="这是正文志哥教你带崩三路adasfsadasdasdasdasidhsakjhdkjashdkjahskjdhsakjdfdsfdsgsd"android:layout_toRightOf="@id/iv"android:layout_below="@id/tv_title"android:textSize="15sp"android:textColor="@android:color/darker_gray"android:lines="2"            只能显示2行,多余用...显示        /><TextView android:id="@+id/tv_comment"android:layout_width="wrap_content"    宽度为包裹内容android:layout_height="wrap_content"android:text="65031条评论"android:textColor="#ff0000"android:layout_alignParentRight="true"   位于右边android:layout_below="@id/tv_detail"/>
</RelativeLayout>

Activity:

package com.itheima.xiaozhinews;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.itheima.xiaozhinews.domain.News;
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.ListView;
import android.widget.TextView;public class MainActivity extends Activity {List<News> newsList;Handler handler = new Handler(){public void handleMessage(android.os.Message msg) {ListView lv = (ListView) findViewById(R.id.lv);lv.setAdapter(new MyAdapter());}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);getNewsInfo();//下载新闻xml
//        ListView lv = (ListView) findViewById(R.id.lv);
//        //要保证在设置适配器时,新闻xml文件已经解析完毕了
//        lv.setAdapter(new MyAdapter());
    }class MyAdapter extends BaseAdapter{//得到模型层中元素的数量,用来确定listview需要有多少个条目
        @Overridepublic int getCount() {//lv.setAdapter执行的时候就会调用getCount方法就会调用getView方法,//所以要不保证lv.setAdapter执行的时候newsList已经初始化好了,不然就会有空指针,//因此lv.setAdapter执行在子线程中的newsList初始化之后,//由于lv.setAdapter是修改UI所以只能通过子线程发送消息给主线程进行UI修改return newsList.size();}@Override//返回一个View对象,作为listview的条目显示至界面public View getView(int position, View convertView, ViewGroup parent) {News news = newsList.get(position);View v = null;ViewHolder mHolder;if(convertView == null){v = View.inflate(MainActivity.this, R.layout.item_listview, null);mHolder = new ViewHolder();//把布局文件中所有组件的对象封装至ViewHolder对象中mHolder.tv_title = (TextView) v.findViewById(R.id.tv_title);mHolder.tv_detail = (TextView) v.findViewById(R.id.tv_detail);mHolder.tv_comment = (TextView) v.findViewById(R.id.tv_comment);mHolder.siv = (SmartImageView) v.findViewById(R.id.iv);//把ViewHolder对象封装至View对象中
                v.setTag(mHolder);}else{v = convertView;mHolder = (ViewHolder) v.getTag();}//利用缓存就不用执行findViewById
            mHolder.tv_title.setText(news.getTitle());mHolder.tv_detail.setText(news.getDetail());mHolder.tv_comment.setText(news.getComment() + "条评论");//给新闻图片imageview设置内容
            mHolder.siv.setImageUrl(news.getImageUrl());return v;//返回v所以缓存为View 
        }class ViewHolder{//条目的布局文件中有什么组件,这里就定义什么属性
            TextView tv_title;TextView tv_detail;TextView tv_comment;SmartImageView siv;}@Overridepublic Object getItem(int position) {return null;}@Overridepublic long getItemId(int position) {return 0;}}private void getNewsInfo() {Thread t = new Thread(){@Overridepublic void run() {String path = "http://192.168.13.13:8080/news.xml";try {URL url = new URL(path);HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setRequestMethod("GET");conn.setConnectTimeout(5000);//连接超时conn.setReadTimeout(5000);//读取超时//发送http GET请求,获取相应码if(conn.getResponseCode() == 200){InputStream is = conn.getInputStream();//使用pull解析器,解析这个流parseNewsXml(is);//之前是文件输入流,这里直接用服务端的流是一样的,
                    }} catch (Exception e) {e.printStackTrace();}}};t.start();}private void parseNewsXml(InputStream is) {XmlPullParser xp = Xml.newPullParser();try {xp.setInput(is, "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())){newsList = new ArrayList<News>();}else if("news".equals(xp.getName())){news = new News();}else if("title".equals(xp.getName())){String title = xp.nextText();news.setTitle(title);}else if("detail".equals(xp.getName())){String detail = xp.nextText();news.setDetail(detail);}else if("comment".equals(xp.getName())){String comment = xp.nextText();news.setComment(comment);}else if("image".equals(xp.getName())){String image = xp.nextText();news.setImageUrl(image);}break;case XmlPullParser.END_TAG:if("news".equals(xp.getName())){newsList.add(news);}break;}//解析完当前节点后,把指针移动至下一个节点,并返回它的事件类型type = xp.next();}//发消息,让主线程设置listview的适配器,如果消息不需要携带数据,可以发送空消息系统自动创建消息。handler.sendEmptyMessage(1);} catch (Exception e) {e.printStackTrace();}}
}

 

转载于:https://www.cnblogs.com/yaowen/p/4928872.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/471451.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python web开发 MySQL数据库基础

文章目录1. 简介2. 下载安装3. 操作 MysQL 数据库3.1 创建数据库3.2 选择数据库3.3 查看数据库3.4 删除数据库4. 数据类型5. 操作 MysQL 数据表5.1 创建数据表5.2 查看表的结构5.3 修改表的结构5.4 删除数据表6. 操作 MySQL 数据表记录6.1 添加数据6.2 查询、修改、删除learnin…

python 操作MySQL数据库

文章目录1. 安装 PyMySQL2. 连接对象3. 游标对象4. 增删改操作cursor.execute(sql)cursor.executemany(sql, seq_of_params)5. 查询操作6. ORM编程常用 python ORM 库learning from 《python web开发从入门到精通》 1. 安装 PyMySQL conda 虚拟环境下安装 pip install pymysq…

python web框架基础

文章目录1. Web框架简介1.1 MVC1.2 模板引擎2. 常用 Python Web 框架3. 虚拟环境4. 部署方式learning from 《python web开发从入门到精通》 1. Web框架简介 简化 web 开发的软件框架 一般都支持&#xff1a;管理路由&#xff0c;支持数据库&#xff0c;MVC&#xff0c;ORM&…

导Excel数据到Oracle的脚本,Oracle使用TOAD实现导入导出Excel数据

在Oracle应用程序的开发过程中&#xff0c;访问数据库对象和编写SQL程序是一件乏味且耗费时间的工作&#xff0c;对数据库进行日常管理也是需要很多SQL脚本才能完成的。Quest Software为此提供了高效的Oracle应用开发工具-Toad。在Toad的新版本中&#xff0c;还加入了DBA模块&a…

Chapter 14 Exercises Problems

转载于:https://www.cnblogs.com/momoko/p/4937730.html

FastAPI 结合 SQLAlchemy 操作 MySQL 数据库

文章目录1. 安装 SQLAlchemy2. 创建数据库3. SQLAlchemy 连接 MySQL4. 创建数据模型5. 创建 Pydantic 模型6. crud 工具7. main函数learning from 《python web开发从入门到精通》 1. 安装 SQLAlchemy pip install sqlalchemy 2. 创建数据库 mysql -u root -p 命令行登录 M…

LeetCode 2094. 找出 3 位偶数

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 digits &#xff0c;其中每个元素是一个数字&#xff08;0 - 9&#xff09;。数组中可能存在重复元素。 你需要找出 所有 满足下述条件且 互不相同 的整数&#xff1a; 该整数由 digits 中的三个元素按 任意 顺序 依次连接 …

LeetCode 2095. 删除链表的中间节点(快慢指针)

文章目录1. 题目2. 解题1. 题目 给你一个链表的头节点 head 。删除 链表的 中间节点 &#xff0c;并返回修改后的链表的头节点 head 。 长度为 n 链表的中间节点是从头数起第 ⌊n / 2⌋ 个节点&#xff08;下标从 0 开始&#xff09;&#xff0c;其中 ⌊x⌋ 表示小于或等于 x…

LeetCode 2096. 从二叉树一个节点到另一个节点每一步的方向(最小公共祖先)

文章目录1. 题目2. 解题1. 题目 给你一棵 二叉树 的根节点 root &#xff0c;这棵二叉树总共有 n 个节点。 每个节点的值为 1 到 n 中的一个整数&#xff0c;且互不相同。 给你一个整数 startValue &#xff0c;表示起点节点 s 的值&#xff0c;和另一个不同的整数 destValue …

LeetCode 2097. 合法重新排列数对(欧拉路径)

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始的二维整数数组 pairs &#xff0c;其中 pairs[i] [starti, endi] 。如果 pairs 的一个重新排列&#xff0c;满足对每一个下标 i &#xff08; 1 < i < pairs.length &#xff09;都有 endi-1 starti &#xff0c…

《如何在大学里脱颖而出(How to Win at College)》读书笔记

《如何在大学里脱颖而出(How to Win at College)》读书笔记 图书简介 中文版&#xff1a; 英文版&#xff1a; 作者卡尔纽波特&#xff08;Cal Newport&#xff09;于 2004 年6月以优等生荣誉学会会员身份毕业于达特茅斯学院。曾在《华尔街日报》的学报和《今日商务》等杂志上发…

LeetCode 2099. 找到和最大的长度为 K 的子序列

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 nums 和一个整数 k 。 你需要找到 nums 中长度为 k 的 子序列 &#xff0c;且这个子序列的 和最大 。 请你返回 任意 一个长度为 k 的整数子序列。 子序列 定义为从一个数组里删除一些元素后&#xff0c;不改变剩下元素的顺…

cms安装教程Linux,DoraCMS安装教程(linux)

最近在熟悉linux环境&#xff0c;也基本上把DoraCMS部署上去了&#xff0c;本教程基于ubuntu server 14.0.4&#xff0c;其它linux版本部署方式基本上差不多&#xff0c;下面详细说明一下&#xff1a;1、进入server环境下&#xff0c;在ubuntu目录下建立文件夹softbak,我们用来…

LeetCode 2100. 适合种地的日子(计数)

文章目录1. 题目2. 解题1. 题目 你和一群强盗准备种地。给你一个下标从 0 开始的整数数组 security &#xff0c;其中 security[i] 是第 i 天 天气热的数量。日子从 0 开始编号。同时给你一个整数 time 。 如果第 i 天满足以下所有条件&#xff0c;我们称它为一个适合种地的日…

如何在linux中使用u盘,如何在Linux系统下使用U盘

如何在Linux系统下使用U盘Linux系统中U盘被视为SCSI设备, SCSI设备对应的设备文件格式为“sdX” 系统中的第一个SCSI设备表示“sda”&#xff0c;第二个表示为“sdb”等。下面是jy135小编收集整理的U盘里面的.如何在Linux系统下使用U盘&#xff0c;欢迎阅读。在Linux系统下&…

linux sys存放内容,了解linux系统目录,sys,tmp,usr,var!

原标题&#xff1a;了解linux系统目录&#xff0c;sys,tmp,usr,var&#xff01;linux小白到大神的成长之路&#xff1a;了解linux系统目录&#xff0c;sys,tmp,usr,var&#xff01;本经验由宗龙龙原创,全文共600多字&#xff0c;阅读需要14分钟&#xff0c;如果文中存在错误&am…

LeetCode 2101. 引爆最多的炸弹(图的遍历)

文章目录1. 题目2. 解题1. 题目 给你一个炸弹列表。一个炸弹的 爆炸范围 定义为以炸弹为圆心的一个圆。 炸弹用一个下标从 0 开始的二维整数数组 bombs 表示&#xff0c;其中 bombs[i] [xi, yi, ri] 。xi 和 yi 表示第 i 个炸弹的 X 和 Y 坐标&#xff0c;ri 表示爆炸范围的…

vim学习笔记(3)眼花缭乱的Vim模式

vim的模式问题&#xff0c;网上说的比较乱&#xff0c;我仔细的查了一下资料&#xff0c;并在这里做一个总结。 总的来说是六大种模式&#xff0c;分别是&#xff1a; 普通(Normal) 可视(Visual) 选择(Select) 插入(Insert) 命令行(Command-line) Ex模式。 还有六个小的组合模式…

linux脚本大全,shell大全

命令解析器——例如bash是一个程序&#xff0c;可以解析shell命令shell基本语法变量环境变量敲命令“env”可以取出所有环境变量环境变量可以当全局变量来使用set命令可以输出当前系统的全部环境变量以及函数unset命令用于删除一个环境变量本地变量自定义的变量——局限在某个脚…

LeetCode 2103. 环和杆(位运算)

文章目录1. 题目2. 解题1. 题目 总计有 n 个环&#xff0c;环的颜色可以是红、绿、蓝中的一种。 这些环分布穿在 10 根编号为 0 到 9 的杆上。 给你一个长度为 2n 的字符串 rings &#xff0c;表示这 n 个环在杆上的分布。 rings 中每两个字符形成一个 颜色位置对 &#xff0…