Retofit fresco 多条目⚪

Util

package com.example.weekone.util;

import com.example.weekone.bean.MyBean;

import retrofit.Call;
import retrofit.http.GET;


public interface PPAP {

    @GET("news/news.php?page=1")
    Call<MyBean> myppap();
}

package com.example.weekone.util;

import retrofit.GsonConverterFactory;
import retrofit.Retrofit;

public class RetofitWang {

    private   Retrofit retrofit;
    private static RetofitWang retofitWang;
    private static final String BASE_URI = "http://www.xieast.com/api/";

    private RetofitWang() {

        initt();

    }

    public static RetofitWang retofitWang (){
        if (retofitWang ==null){
            retofitWang = new RetofitWang();
        }
        return retofitWang;
    }

    public  void  initt(){

        retrofit = new Retrofit.Builder()
                .baseUrl(BASE_URI)
                .addConverterFactory(GsonConverterFactory.create())
                .build();

    }
    public <T> T create(final Class<T> service) {
        return retrofit.create(service);
    }
}

Adapter

package com.example.weekone.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.example.weekone.R;
import com.example.weekone.bean.DataBean;
import com.facebook.drawee.view.SimpleDraweeView;

import java.util.List;

public class MyAdapter extends RecyclerView.Adapter {

    List<DataBean> list;
    Context context;

    public int getItemViewType(int positoion){
        if (positoion%2==0){
            return 2;
        }else {
            return 1;
        }

    }


    public MyAdapter(List<DataBean> list, Context context) {
        this.list = list;
        this.context = context;
    }

    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {

        if (i==2){
            return new asd(LayoutInflater.from(context).inflate(R.layout.firstentry,null));
        }else {
            return new asdasd(LayoutInflater.from(context).inflate(R.layout.firstentrytwo,null));
        }

    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {

        if (viewHolder instanceof asd ){
            ((asd) viewHolder).Ttext.setText(list.get(i).getAuthor_name());
            ((asd) viewHolder).image.setImageURI(list.get(i).getThumbnail_pic_s());
        }else if (viewHolder instanceof asdasd){
            ((asdasd) viewHolder).Ttext.setText(list.get(i).getAuthor_name());
            ((asdasd) viewHolder).image.setImageURI(list.get(i).getThumbnail_pic_s());
        }
    }

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

    class asd extends RecyclerView.ViewHolder {
        private SimpleDraweeView image;
        private TextView Ttext;
        public asd(@NonNull View itemView) {
            super(itemView);

            image =itemView.findViewById(R.id.image);
            Ttext = itemView.findViewById(R.id.Ttext);

        }
    }

    class asdasd extends RecyclerView.ViewHolder {
        private SimpleDraweeView image;
        private TextView Ttext;
        public asdasd(@NonNull View itemView) {
            super(itemView);

            image =itemView.findViewById(R.id.image);
            Ttext = itemView.findViewById(R.id.Ttext);

        }
    }

}

App

package com.example.weekone.app;

import android.app.Application;
import android.os.Environment;

import com.facebook.cache.disk.DiskCacheConfig;
import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.imagepipeline.core.ImagePipelineConfig;

public class App  extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        //自定义缓存
        DiskCacheConfig diskCacheConfig = DiskCacheConfig.newBuilder(this)
                .setBaseDirectoryName("images_zjj")
                .setBaseDirectoryPath(Environment.getExternalStorageDirectory()).build();

        //设置磁盘缓存的配置,生成配置文件
        ImagePipelineConfig config = ImagePipelineConfig.newBuilder(this)
                .setMainDiskCacheConfig(diskCacheConfig).build();


        Fresco.initialize(this, config);

    }
}

m

package com.example.weekone.m;

import com.example.weekone.bean.MyBean;
import com.example.weekone.util.PPAP;
import com.example.weekone.util.RetofitWang;

import retrofit.Call;


public class Model {

    public static Call<MyBean> DataModel(){
        return RetofitWang.retofitWang().create(PPAP.class).myppap();
    }
}

P

package com.example.weekone.p;

import com.example.weekone.bean.MyBean;
import com.example.weekone.m.Model;


import retrofit.Call;

public class Presenter {
    public static Call<MyBean> DataPresenter(){
        return Model.DataModel();
    }
}

MainActivity

package com.example.weekone;

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

import com.example.weekone.adapter.MyAdapter;
import com.example.weekone.bean.DataBean;
import com.example.weekone.bean.MyBean;
import com.example.weekone.dao.DaoMaster;
import com.example.weekone.dao.DaoSession;
import com.example.weekone.dao.DataBeanDao;
import com.example.weekone.p.Presenter;

import java.util.List;


import retrofit.Callback;
import retrofit.Response;

public class MainActivity extends AppCompatActivity {
    private RecyclerView Rec;
    private DataBeanDao dataBeanDao;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        DaoSession daoSession = DaoMaster.newDevSession(getApplicationContext(), DataBeanDao.TABLENAME);
        dataBeanDao = daoSession.getDataBeanDao();
        Rec = (RecyclerView) findViewById(R.id.Rec);


        if (IFHomeWork.isNetworkConnected(this)) {


            Presenter.DataPresenter().enqueue(new Callback<MyBean>() {
                //成功
                @Override
                public void onResponse(Response<MyBean> response) {
                    List<DataBean> list = response.body().getData();
                    ininin(list);
                    for (int i = 0; i < list.size(); i++) {
                        DataBean dataBean = list.get(i);
                        dataBeanDao.insertOrReplace(new DataBean(i, dataBean.getAuthor_name(), dataBean.getThumbnail_pic_s(), null, null, null, null, null, null, null));
                        Toast.makeText(MainActivity.this, "村儿", Toast.LENGTH_SHORT).show();
                    }

                }


                //失败
                @Override
                public void onFailure(Throwable t) {

                }
            })
            ;
        } else {


            List<DataBean> dataBeans = dataBeanDao.loadAll();
            LinearLayoutManager manager = new LinearLayoutManager(this);
            Rec.setLayoutManager(manager);
            MyAdapter myAdapter = new MyAdapter(dataBeans, this);
            Rec.setAdapter(myAdapter);
            Toast.makeText(this, "没网谢谢", Toast.LENGTH_SHORT).show();
        }


    }

    private void ininin(List<DataBean> list) {

        LinearLayoutManager manager = new LinearLayoutManager(this);
        Rec.setLayoutManager(manager);
        MyAdapter myAdapter = new MyAdapter(list, this);
        Rec.setAdapter(myAdapter);
    }


}

网络

package com.example.weekone;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;

public class IFHomeWork {
    public static boolean isNetworkConnected(Context context) {
         if (context != null) {
             ConnectivityManager mConnectivityManager = (ConnectivityManager) context
             .getSystemService(Context.CONNECTIVITY_SERVICE);
             NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
             if (mNetworkInfo != null) {
                 return mNetworkInfo.isAvailable();
                 }
             }
         return false;
         }

}

//契约类

package com.example.dweekfirst.cantract;

import com.example.dweekfirst.util.SerivceApl;

public interface IuWui {

    //model
    public interface DataModel{
        public SerivceApl getData();
    }

    //presenter
    public interface DataPresenter{
        public void getData(Object... arg);
    }

    //view
    public interface DataView{
        public void  showSuccess(Object o);
        public void  showFail(Throwable o);
    }
}

//Retrofit

package com.example.dweekfirst.util;

import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;

public class NetRetoFit {
    private Retrofit retrofit;
    private static NetRetoFit netRetoFit;
    private static final String BASE_URI = "http://172.17.8.100/movieApi/";

    //构造方法私有化
    private NetRetoFit(){
        init();
    }

    //单例模式
    public static NetRetoFit getNetRetoFit() {
        if(netRetoFit == null){
            netRetoFit = new NetRetoFit();
        }
        return netRetoFit;
    }

    private void init() {
        //拦截器
        HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();
        httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
        OkHttpClient client = new OkHttpClient.Builder()
                .addInterceptor(httpLoggingInterceptor)
                .build();

        retrofit = new Retrofit.Builder()
                .client(client)
                .baseUrl(BASE_URI)
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .addConverterFactory(GsonConverterFactory.create())
                .build();



    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值