OKhttp+Gson實現從網路上獲取最新新聞
阿新 • • 發佈:2019-01-01
直接上效果圖,畫面太美,請保護好自己的小心臟。能畫出這麼漂亮的UI我都佩服我寄幾。
新聞列表:
新聞詳情:
是的 都是最新的新聞。、
實現
下面我們就來看看具體怎麼實現的:
我一直覺得思路是非常重要的所以我先講思路,有了思路,做起來就非常迅速了
先講思路:
1.最新的新聞都是由聚合資料提供的(json資料),我們去申請下就好了;(當然你們也可以用我的URL,講道理,是沒有問題的)
2.通過OKhttp去網路URL,獲取到Json資料;
3.通過Gson將Json資料轉化為Java;
4.通過Adapter往Listview新增資料;
5.通過Glide載入圖片;
6.通過點選事件進入新聞詳情。
滿滿的框架,簡直不要太簡單。不過希望大家還是需要去了解框架的具體實現。
下面貼出程式碼:
MainActivity:
package com.wind.okhttp;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.wind.okhttp.model.NewsBean;
import java.util.List;
/**
* Created by zhangcong on 2017/4/25.
*/
//adapter 適配資料
public class NewsListBaseAdapter extends BaseAdapter {
public static List<NewsBean.Second.Third> list;
private Context context;
public NewsListBaseAdapter (List<NewsBean.Second.Third> list,Context context)
{
this.context=context;
this.list=list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder=null;
if (convertView==null)
{
viewHolder=new ViewHolder();
convertView= LayoutInflater.from(context).inflate(R.layout.item_new_list,null,false);
viewHolder.imageView= (ImageView) convertView.findViewById(R.id.iv_news_list_image);
viewHolder.title= (TextView) convertView.findViewById(R.id.tv_news_list_title);
viewHolder.author= (TextView) convertView.findViewById(R.id.tv_news_list_realtype);
viewHolder.time= (TextView) convertView.findViewById(R.id.tv_news_list_time);
convertView.setTag(viewHolder);
}
viewHolder= (ViewHolder) convertView.getTag();
Glide.with(context).load(list.get(position).thumbnail_pic_s).into(viewHolder.imageView);//Glide 載入圖片
viewHolder.title.setText(list.get(position).title);
viewHolder.time.setText(list.get(position).date);
viewHolder.author.setText(list.get(position).author_name);
return convertView;
}
class ViewHolder
{
private ImageView imageView;
private TextView title;
private TextView author;
private TextView time;
}
}
具體的思路已經給出了,稍微配合下demo就能看得懂的,邏輯啥的都是非常簡單的。