retrofit

API
@GET("home/getHome")
Call<NewsBean> news();

adapter

package com.bwie.week01.adapter;

import android.content.Context;
import android.content.Intent;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.bwie.week01.R;
import com.bwie.week01.bean.NewsBean;
import com.bwie.week01.product.view.ProductActivity;
import com.facebook.drawee.view.SimpleDraweeView;

import java.util.List;

/**
 * Created by dell on 2018/11/3.
 */

public class NewsAdapter extends RecyclerView.Adapter<NewsAdapter.ViewHolder> {

    private Context context;
    private List<NewsBean.DataBean.TuijianBean.ListBeanX> list;

    public NewsAdapter(Context context, List<NewsBean.DataBean.TuijianBean.ListBeanX> list) {
        this.context = context;
        this.list = list;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = View.inflate(context,R.layout.news_item,null);
        ViewHolder holder = new ViewHolder(v);
        return holder;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, final int position) {

        String images = list.get(position).getImages();
        String[] strings = images.split("\\|");

        holder.sdvNews.setImageURI(strings[0]);
        holder.txtNews.setText(list.get(position).getTitle());

        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(context, ProductActivity.class);
                intent.putExtra("pid",list.get(position).getPid());
                context.startActivity(intent);
            }
        });
    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    class ViewHolder extends RecyclerView.ViewHolder {

        private SimpleDraweeView sdvNews;
        private TextView txtNews;

        public ViewHolder(View itemView) {
            super(itemView);
            sdvNews = itemView.findViewById(R.id.sdv_news);
            txtNews = itemView.findViewById(R.id.txt_news);
        }
    }
}
callback
package com.bwie.week01.callback;

/**
 * Created by dell on 2018/11/3.
 */

public interface ICallBack {
    void onSuccess(Object o);

    void onFiled(Exception e);
}

model

package com.bwie.week01.News.model;

import com.bwie.week01.api.NewsApi;
import com.bwie.week01.bean.NewsBean;
import com.bwie.week01.callback.ICallBack;
import com.bwie.week01.utils.HttpUtils;

import java.lang.reflect.Type;

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;

/**
 * Created by dell on 2018/11/3.
 */

public class NewsModel {

    public void news(final ICallBack callBack){
        NewsApi newsApi = HttpUtils.getInstance().create(NewsApi.class);

        Call<NewsBean> call = newsApi.news();

        call.enqueue(new Callback<NewsBean>() {
            @Override
            public void onResponse(Call<NewsBean> call, Response<NewsBean> response) {
                if (response.isSuccessful()) {
                    NewsBean body = response.body();
                    if (body != null & "0".equals(body.getCode())) {
                        callBack.onSuccess(body);
                    }
                }
            }

            @Override
            public void onFailure(Call<NewsBean> call, Throwable t) {
                callBack.onFiled(null);
            }
        });
    }
}

presenter

package com.bwie.week01.News.presenter;

import com.bwie.week01.News.model.NewsModel;
import com.bwie.week01.News.view.NewsView;
import com.bwie.week01.bean.NewsBean;
import com.bwie.week01.callback.ICallBack;
import com.google.gson.reflect.TypeToken;

import java.lang.reflect.Type;

/**
 * Created by dell on 2018/11/3.
 */

public class NewsPresenter {
    private NewsView nv;
    private NewsModel newsModel;

    public void attach(NewsView nv) {
        this.nv = nv;
        newsModel = new NewsModel();
    }

    public void getNews(){
//        Type type = new TypeToken<NewsBean>(){}.getType();
        newsModel.news(new ICallBack() {
            @Override
            public void onSuccess(Object o) {
                NewsBean newsBean = (NewsBean) o;
                if (newsBean != null){
                    nv.onSuccess(newsBean.getData().getTuijian().getList());
                }
            }

            @Override
            public void onFiled(Exception e) {
                nv.onFailed(e);
            }
        });
    }
}
activity
package com.bwie.week01.News.view;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.widget.Toast;

import com.bwie.week01.News.presenter.NewsPresenter;
import com.bwie.week01.R;
import com.bwie.week01.adapter.NewsAdapter;
import com.bwie.week01.bean.NewsBean;

import java.util.ArrayList;
import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;

public class MainActivity extends AppCompatActivity implements NewsView{

    @BindView(R.id.rv_news)
    RecyclerView rvNews;

    private List<NewsBean.DataBean.TuijianBean.ListBeanX> listBeanXES;
    private NewsAdapter adapter;
    private NewsPresenter presenter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        initView();
    }

    private void initView() {
        listBeanXES = new ArrayList<>();
        adapter = new NewsAdapter(this,listBeanXES);
        RecyclerView.LayoutManager manager = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);
        rvNews.setLayoutManager(manager);
        rvNews.setAdapter(adapter);
        presenter = new NewsPresenter();
        presenter.attach(this);
        presenter.getNews();
    }

    @Override
    public void onSuccess(List<NewsBean.DataBean.TuijianBean.ListBeanX> list) {
        if (list != null){
            listBeanXES.clear();
            listBeanXES.addAll(list);
            adapter.notifyDataSetChanged();
        }
    }

    @Override
    public void onFailed(Exception e) {
        Toast.makeText(this,"网络请求错误",Toast.LENGTH_LONG).show();
    }
}

utils

package com.bwie.week01.utils;

import com.bwie.week01.callback.ICallBack;

import java.util.concurrent.TimeUnit;

import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

/**
 * Created by dell on 2018/11/3.
 */

public class HttpUtils {
    public static final String url = "http://www.zhaoapi.cn/";

    private Retrofit retrofit;

    private static final class SINGLE_INSTANCE {
        private static final HttpUtils _INSTANCE = new HttpUtils();
    }

    public static HttpUtils getInstance() {
        return SINGLE_INSTANCE._INSTANCE;
    }

    private HttpUtils() {
        retrofit = new Retrofit.Builder()
                .baseUrl(url)
                .addConverterFactory(GsonConverterFactory.create())
                .build();
    }

    public Retrofit getRetrofit(){
        return retrofit;
    }

    public <T> T create(Class<T> clazz){
        return retrofit.create(clazz);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值