Model层
Model
public class Model { Context context; public Model(Context context) { this.context = context; } public void info(final PresenterInter pre){ DataManager dataManager=new DataManager(context); CompositeSubscription compositeSubscription=new CompositeSubscription(); compositeSubscription.add( //observerble 被观察者 dataManager.getcall() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) //订阅 .subscribe( //观察者 new Observer() { @Override public void onCompleted() { Log.d("xxx", "onCompleted: "+"onCompleted"); } @Override public void onError(Throwable e) { } @Override public void onNext(Bean bean) { Log.d("jiba", "onNext: "+bean.toString()); pre.onSuccessP(bean); } }) ); } }
P层
DataManager
public class DataManager { private ServiceApi mRetrofitService; //构造器里获取RetrofitService public DataManager(Context context){ this.mRetrofitService = RetrofitHelper.getInstance(context).getServer(); } //网络请求方法getSearchBooks public Observablegetcall(){ return mRetrofitService.call(); } }
Presenter
public class Presenter implements PresenterInter { Model model; private ViewInter vi; Context context; public Presenter(ViewInter vi, Context context) { this.vi = vi; this.context = context; model=new Model(context); } public void info(){ model.info(this); } @Override public void onSuccessP(Bean bean) { vi.onSuccessV(bean); } }
PresenterInter接口
public interface PresenterInter { void onSuccessP(Bean bean); }
RetrofitHelper
public class RetrofitHelper { private Context mCntext; //初始化 OkHttpClient client = new OkHttpClient(); //gson工厂 GsonConverterFactory factory = GsonConverterFactory.create(new GsonBuilder().create()); private static RetrofitHelper instance = null; private Retrofit mRetrofit = null; //单例模式 public static RetrofitHelper getInstance(Context context){ if (instance == null){ instance = new RetrofitHelper(context); } return instance; } private RetrofitHelper(Context mContext){ mCntext = mContext; init(); } private void init() { resetApp(); } private void resetApp() { //初始化retrofit mRetrofit = new Retrofit.Builder() .baseUrl(Wz.wz) .client(client) .addConverterFactory(factory) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); } public ServiceApi getServer(){ return mRetrofit.create(ServiceApi.class); } }
ServiceApi接口
public interface ServiceApi { @GET("ad/getAd") Observablecall(); }
Wz
public class Wz { public static String wz="http://120.27.23.105/"; }
V层
ViewInter
public interface ViewInter { void onSuccessV(Bean bean); }
MainActivity类
public class MainActivity extends AppCompatActivity implements ViewInter{ private XRecyclerView xre; private Listlist; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); xre = findViewById(R.id.xre); Presenter presenter=new Presenter(this,this); presenter.info(); } @Override public void onSuccessV(Bean bean) { list = bean.getMiaosha().getList(); MyAdapter adapter=new MyAdapter(list,MainActivity.this); GridLayoutManager gridLayoutManager=new GridLayoutManager(MainActivity.this,2,GridLayoutManager.VERTICAL,false); xre.setLayoutManager(gridLayoutManager); xre.setAdapter(adapter); } @Override protected void onStop() { CompositeSubscription compositeSubscription = new CompositeSubscription(); compositeSubscription.unsubscribe(); super.onStop(); } @Override protected void onDestroy() { super.onDestroy(); } }
MyAdapter
public class MyAdapter extends RecyclerView.Adapter{ List list; Context context; public MyAdapter(List list, Context context) { this.list = list; this.context = context; } @Override public VHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LinearLayout.inflate(context, R.layout.item_layout, null); VHolder holder=new VHolder(view); return holder; } @Override public void onBindViewHolder(VHolder holder, int position) { holder.t.setText(list.get(position).getTitle()); String[] split = list.get(position).getImages().split("\\|"); holder.dra.setImageURI(split[0]); } @Override public int getItemCount() { return list.size(); } class VHolder extends RecyclerView.ViewHolder{ private final TextView t; private final SimpleDraweeView dra; public VHolder(View itemView) { super(itemView); dra = itemView.findViewById(R.id.dra); t = itemView.findViewById(R.id.t); } } }
MyApp
public class MyApp extends Application { @Override public void onCreate() { super.onCreate(); Fresco.initialize(this); } }
compile 'com.squareup.retrofit2:retrofit:2.3.0' compile 'com.squareup.retrofit2:converter-gson:2.3.0' compile 'com.jcodecraeer:xrecyclerview:1.3.2' compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0' compile 'io.reactivex:rxandroid:1.2.0' compile 'com.facebook.fresco:fresco:0.12.0'