安卓开发之简易新闻客户端
Entity包下创建实体类NewsInfo
package cn.edu.bzu.myapplication.entity;/*** Created by Administrator on 2017/5/17.*/public class NewsInfo {private String iconPath;private String title;private String description;private int type;private long comment;public String getIconPath() {return iconPath;}public void setIconPath(String iconPath) {this.iconPath = iconPath;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getDescription() {return description;}public void setDescription(String description) {this.description = description;}public int getType() {return type;}public void setType(int type) {this.type = type;}public long getComment() {return comment;}public void setComment(long comment) {this.comment = comment;}
}
adapter包下创建NewsAdapter类
package cn.edu.bzu.myapplication.adapter;/** * Created by Administrator on 2017/4/21. */ import android.content.Context; import android.graphics.Color; import android.support.annotation.NonNull; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.TextView;import com.loopj.android.image.SmartImageView;import java.util.List;import cn.edu.bzu.myapplication.R; import cn.edu.bzu.myapplication.entity.NewsInfo;public class NewAdapter extends ArrayAdapter<NewsInfo>{ private int resourceID;public NewAdapter(Context context, int resource, List<NewsInfo> objects) {super(context, resource, objects);resourceID=resource;}@Override public View getView(int position, View convertView, ViewGroup parent) {NewsInfo fruit=getItem(position);View view;ViewHolder viewHolder;if(convertView==null){view=LayoutInflater.from(getContext()).inflate(resourceID,null);viewHolder=new ViewHolder();viewHolder.siv=(SmartImageView)view.findViewById(R.id.siv_icon);viewHolder.tv_title=(TextView)view.findViewById(R.id.tv_title);viewHolder.tv_description=(TextView)view.findViewById(R.id.tv_description);viewHolder.tv_type=(TextView)view.findViewById(R.id.tv_type);view.setTag(viewHolder);}else{view=convertView;viewHolder= (ViewHolder) view.getTag();}viewHolder.siv.setImageUrl(fruit.getIconPath(),R.drawable.a,R.drawable.ic_launcher);viewHolder.tv_title.setText(fruit.getTitle());viewHolder.tv_description.setText(fruit.getDescription());int type=fruit.getType();switch (type){case 1:viewHolder.tv_type.setText("评论:"+fruit.getComment());viewHolder.tv_type.setTextColor(Color.BLUE);break;case 2:viewHolder.tv_type.setText("专题");viewHolder.tv_type.setTextColor(Color.BLACK);break;case 3:viewHolder.tv_type.setText("LIVE");viewHolder.tv_type.setTextColor(Color.RED);break;}return view;}class ViewHolder{SmartImageView siv;TextView tv_title;TextView tv_description;TextView tv_type;} }
Tools包下创建工具类JsonParse负责解析JSON数据
package cn.edu.bzu.myapplication.Tools;import com.google.gson.Gson; import com.google.gson.reflect.TypeToken;import java.lang.reflect.Type; import java.util.List;import cn.edu.bzu.myapplication.entity.NewsInfo;/** * Created by Administrator on 2017/5/18. */ public class JsonParse {public static List<NewsInfo> getNewInfo(String json){Gson gson=new Gson();Type listType=new TypeToken<List<NewsInfo>>(){}.getType();List<NewsInfo> newsInfos=gson.fromJson(json,listType);return newsInfos;} }
界面逻辑代码的设计与实现
package cn.edu.bzu.myapplication;import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.Toast;import com.loopj.android.http.AsyncHttpClient; import com.loopj.android.http.AsyncHttpResponseHandler;import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List;import cn.edu.bzu.myapplication.Tools.JsonParse; import cn.edu.bzu.myapplication.adapter.NewAdapter; import cn.edu.bzu.myapplication.entity.NewsInfo; import cn.edu.bzu.myapplication.model.Fruit;public class MainActivity extends AppCompatActivity {private ListView Iv_news;private NewAdapter newAdapter;private List<NewsInfo> newInfos;private LinearLayout loading;private JsonParse jsonParse;@Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Iv_news= (ListView) findViewById(R.id.lv_news);newAdapter =new NewAdapter(this,R.layout.news_item,newInfos);loading= (LinearLayout) findViewById(R.id.loading);prepareData();}private void prepareData() {//fruitList=new ArrayList<>(); //Fruit apple=new Fruit("Apple",R.drawable.apple_pic); // fruitList.add(apple); AsyncHttpClient asyncHttpClient=new AsyncHttpClient();asyncHttpClient.get(getString(R.string.serverurl), new AsyncHttpResponseHandler() {@Override public void onSuccess(int i, cz.msebera.android.httpclient.Header[] headers, byte[] bytes) {try {String json=new String(bytes,"utf-8");newInfos=jsonParse.getNewInfo(json);if(newInfos==null){Toast.makeText(MainActivity.this,"解析失败",Toast.LENGTH_SHORT).show();}else {loading.setVisibility(View.INVISIBLE);Iv_news.setAdapter(newAdapter);}} catch (UnsupportedEncodingException e) {e.printStackTrace();}}@Override public void onFailure(int i, cz.msebera.android.httpclient.Header[] headers, byte[] bytes, Throwable throwable) {Toast.makeText(MainActivity.this,"请求失败",Toast.LENGTH_SHORT).show();}});}}
主布局文件如下
<?xml version="1.0" encoding="utf-8"?> <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" tools:context=".MainActivity" android:orientation="vertical"><FrameLayout android:layout_width="match_parent" android:layout_height="match_parent"><LinearLayout android:id="@+id/loading" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical" android:visibility="invisible"><ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content" /><TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="正在加载信息..." /></LinearLayout><ListView android:id="@+id/lv_news" android:layout_width="match_parent" android:layout_height="match_parent" /></FrameLayout> </LinearLayout>
news_item.xml如下
<?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="65dp"><com.loopj.android.image.SmartImageView android:id="@+id/siv_icon" android:layout_width="80dp" android:layout_height="60dp" android:scaleType="centerCrop" android:src="@mipmap/ic_launcher" android:layout_alignParentLeft="true" android:layout_alignParentStart="true"></com.loopj.android.image.SmartImageView><TextView android:id="@+id/tv_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:layout_marginTop="10dp" android:layout_toRightOf="@id/siv_icon" android:ellipsize="end" android:maxLength="20" android:singleLine="true" android:text="我是标题" android:textColor="#000000" android:textSize="18sp" /><TextView android:id="@+id/tv_description" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/tv_title" android:layout_marginLeft="5dp" android:layout_marginTop="5dp" android:layout_toRightOf="@id/siv_icon" android:ellipsize="end" android:maxLength="16" android:maxLines="1" android:text="我是描述" android:textColor="#99000000" android:textSize="14sp" /><TextView android:id="@+id/tv_type" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:layout_marginBottom="5dp" android:layout_marginRight="10dp" android:text="评论" android:textColor="#99000000" android:textSize="12sp" /></RelativeLayout>
value下建一个configure.xml文件
<?xml version="1.0" encoding="utf-8"?> <resources><string name="serverurl">http://172.16.26.58:8080/newInfo.xml</string> </resources>
在tomcat目录下打开webapps 将写好的NewInfo.xml放置在ROOT文件下
启动tomcat服务器 就可看到运行的界面了。。
安卓开发之简易新闻客户端相关推荐
- android开发笔记之网络编程—简易新闻客户端
今天我们来对前面讲过的知识综合运用一下,包括xml的PULL解析,listView的万能适配器等知识.... 那先来看一个组件-->智能图片加载器(smart-image-view),它可以很方 ...
- ListView实现简易新闻客户端
文章目录 一.作业要求 二.具体实现 1.0布局文件(activity_main.xml) 1.1布局文件(simpleitem.xml) 2.程序代码(MainActivity.java) 总结 一 ...
- Android简易新闻客户端自动升级 简易新闻(二十)
Android简易新闻客户端自动升级 简易新闻(二十) 关于 说明 第一步,添加引用 第二步,注册蒲公英账号 第三步,添加AndroidManifest.xml配置 初始化 最后一步 打包上传 关于 ...
- IOS开发——仿网易新闻客户端
IOS开发--仿网易新闻客户端 本文没有内容,传个资源 衔接地址:http://download.csdn.net/detail/u012881779/7152281 左侧导航部分: 新闻版块 订阅版 ...
- httpclient来实现android客户端编程,Android网络编程之简易新闻客户端
一. 通过一个案例"新闻客户端"向大家演示AsyncHttpClient和SmartImageView的综合使用. 运行结果如下: 1.首先我们了解一下相关知识: SmartIma ...
- 简易新闻客户端android
1.创建app\src\main\res\xml\network_security_config.xml 目的可以访问http请求 <?xml version="1.0" e ...
- web开发制作简易新闻网页
效果图: 代码 <!DOCTYPE html> <html lang="en"><head><meta charset="UTF ...
- android新闻客户端报告,简易的Android新闻客户端
学完Android基础之后不知道该怎么办?现在开始实战吧! 现在来看看一款简易的Android新闻客户端是怎么做的,当然,获取网络数据的这一部分我是使用别人做好的本地客户端,然后通过组建本地数据库来使 ...
- 基于Android小巫新闻客户端开发---显示新闻详细内容UI设计
基于Android小巫新闻客户端开发---显示新闻详细内容UI设计 2013年2月27日,天气潮湿!!! 距上一次写的主界面业务逻辑实现,已经过来11天,小巫觉得拖得太久了,所以决定尽量把所有的内容介 ...
最新文章
- 2021fall Broadway Tech校招
- IntelliSense: const char * 类型的实参与 LPCTSTR 类型的形参不兼容
- assert() (C++) 非常简单!
- Python 基础 函数
- [How TO]-openjrok维护手册
- 通过rhel7的kvm虚拟机实现3节点Postgres-XL(包括gtm standby)
- 我想站在巨人的肩上——记成都之行
- Delphi版本下载合集更新至10.4.1
- html链接安装包,磁力宅资源链接地址
- 使用html制作一个网页
- 鼎捷ERP二维码整体解决方案——适应于制造业、物流行业(适用于用友ERP、金蝶ERP、SAP)
- unity设置手机横屏方法和相关问题
- 【Linux服务器架设】搭建存储服务器-NFS
- 宝藏又小众的覆盖物PBR多通道贴图素材网站分享
- 锂离子电池HPPC测量
- P1119 灾后重建(基础Floyd原理的理解和运用)
- API和SDK是什么?有什么区别?如何测试SDK?一篇文章统统告诉你!
- win11系统搭建FTP服务器超详细流程
- 看了这个你的下载速度还会慢???
- 计算机无法安装windows系统怎么办,电脑无法安装win7系统怎么办
热门文章
- 为什么互联网公司不招 32 岁以上的码农?
- 控制情绪,享受高品质人生
- 小程序授权申请 wx.authorize的问题
- 前端性能优化(重点)
- window server2008 ad域控搭建
- oracle 11g votedisk,Oracle 11gR2 RAC恢复OCR和VOTE DISK
- 【drawio笔记】漫画风格
- android6.0 挂断电话流程分析(一)
- 测试用例,必须这么写....
- python里object是什么类型_Python中的object这个叫做基类的类,它的属性和行为都有哪些?...