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);
}
}