这期内容当中小编将会给大家带来有关怎么在Android应用中模拟一个新闻客户端,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
邕宁网站建设公司成都创新互联,邕宁网站设计制作,有大型网站制作公司丰富经验。已为邕宁1000+提供企业网站建设服务。企业网站搭建\外贸营销网站建设要多少钱,请找那个售后服务好的邕宁做网站的公司定做!
首先我们创建一个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 Becauseshy 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; } }
创建json文件的实体类:
package cn.edu.bzu.myapplication.entity; /** * Created by Becauseshy 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; } }
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
item的布局文件:
<?xml version="1.0" encoding="utf-8"?>
适配器代码:
package cn.edu.bzu.myapplication.adapter; /** * Created by Becauseshy on 2017/5/17. */ 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; } }
MainActivity实现代码:
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(); } }); } }
在values文件加下的String.xml文件中添加:
最后一定不要忘了添加网络访问权限
上述就是小编为大家分享的怎么在Android应用中模拟一个新闻客户端了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。