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服务器 就可看到运行的界面了。。

安卓开发之简易新闻客户端相关推荐

  1. android开发笔记之网络编程—简易新闻客户端

    今天我们来对前面讲过的知识综合运用一下,包括xml的PULL解析,listView的万能适配器等知识.... 那先来看一个组件-->智能图片加载器(smart-image-view),它可以很方 ...

  2. ListView实现简易新闻客户端

    文章目录 一.作业要求 二.具体实现 1.0布局文件(activity_main.xml) 1.1布局文件(simpleitem.xml) 2.程序代码(MainActivity.java) 总结 一 ...

  3. Android简易新闻客户端自动升级 简易新闻(二十)

    Android简易新闻客户端自动升级 简易新闻(二十) 关于 说明 第一步,添加引用 第二步,注册蒲公英账号 第三步,添加AndroidManifest.xml配置 初始化 最后一步 打包上传 关于 ...

  4. IOS开发——仿网易新闻客户端

    IOS开发--仿网易新闻客户端 本文没有内容,传个资源 衔接地址:http://download.csdn.net/detail/u012881779/7152281 左侧导航部分: 新闻版块 订阅版 ...

  5. httpclient来实现android客户端编程,Android网络编程之简易新闻客户端

    一. 通过一个案例"新闻客户端"向大家演示AsyncHttpClient和SmartImageView的综合使用. 运行结果如下: 1.首先我们了解一下相关知识: SmartIma ...

  6. 简易新闻客户端android

    1.创建app\src\main\res\xml\network_security_config.xml 目的可以访问http请求 <?xml version="1.0" e ...

  7. web开发制作简易新闻网页

    效果图: 代码 <!DOCTYPE html> <html lang="en"><head><meta charset="UTF ...

  8. android新闻客户端报告,简易的Android新闻客户端

    学完Android基础之后不知道该怎么办?现在开始实战吧! 现在来看看一款简易的Android新闻客户端是怎么做的,当然,获取网络数据的这一部分我是使用别人做好的本地客户端,然后通过组建本地数据库来使 ...

  9. 基于Android小巫新闻客户端开发---显示新闻详细内容UI设计

    基于Android小巫新闻客户端开发---显示新闻详细内容UI设计 2013年2月27日,天气潮湿!!! 距上一次写的主界面业务逻辑实现,已经过来11天,小巫觉得拖得太久了,所以决定尽量把所有的内容介 ...

最新文章

  1. 2021fall Broadway Tech校招
  2. IntelliSense: const char * 类型的实参与 LPCTSTR 类型的形参不兼容
  3. assert() (C++) 非常简单!
  4. Python 基础 函数
  5. [How TO]-openjrok维护手册
  6. 通过rhel7的kvm虚拟机实现3节点Postgres-XL(包括gtm standby)
  7. 我想站在巨人的肩上——记成都之行
  8. Delphi版本下载合集更新至10.4.1
  9. html链接安装包,磁力宅资源链接地址
  10. 使用html制作一个网页
  11. 鼎捷ERP二维码整体解决方案——适应于制造业、物流行业(适用于用友ERP、金蝶ERP、SAP)
  12. unity设置手机横屏方法和相关问题
  13. 【Linux服务器架设】搭建存储服务器-NFS
  14. 宝藏又小众的覆盖物PBR多通道贴图素材网站分享
  15. 锂离子电池HPPC测量
  16. P1119 灾后重建(基础Floyd原理的理解和运用)
  17. API和SDK是什么?有什么区别?如何测试SDK?一篇文章统统告诉你!
  18. win11系统搭建FTP服务器超详细流程
  19. 看了这个你的下载速度还会慢???
  20. 计算机无法安装windows系统怎么办,电脑无法安装win7系统怎么办

热门文章

  1. 为什么互联网公司不招 32 岁以上的码农?
  2. 控制情绪,享受高品质人生
  3. 小程序授权申请 wx.authorize的问题
  4. 前端性能优化(重点)
  5. window server2008 ad域控搭建
  6. oracle 11g votedisk,Oracle 11gR2 RAC恢复OCR和VOTE DISK
  7. 【drawio笔记】漫画风格
  8. android6.0 挂断电话流程分析(一)
  9. 测试用例,必须这么写....
  10. python里object是什么类型_Python中的object这个叫做基类的类,它的属性和行为都有哪些?...