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{ private int resourceID; public NewAdapter(Context context, int resource, List 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 ListgetNewInfo(String json){ Gson gson=new Gson(); Type listType=new TypeToken >(){ }.getType(); List
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 ListnewInfos; 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.xmlstring> resources>
在tomcat目录下打开webapps 将写好的NewInfo.xml放置在ROOT文件下
启动tomcat服务器 就可看到运行的界面了。。