抽基类+MVP+Retrofit+Rxjava+适配器+Recyclerview展示数据
implementation 'com.jakewharton:butterknife:8.8.1'
? ? annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
//輪播圖
? ? implementation 'com.youth.banner:banner:1.4.10'
//Fresco
? ? implementation 'com.facebook.fresco:fresco:1.9.0'
// Fresco 支持 GIF 動圖,需要添加
? ? implementation 'com.facebook.fresco:animated-gif:1.9.0'
? ? implementation 'com.facebook.fresco:imagepipeline-okhttp3:0.11.0'
//依賴begin
? ? implementation 'com.google.code.gson:gson:2.8.5'
//刷新的第三方
? ? implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.5.1'
? ? implementation 'com.scwang.smartrefresh:SmartRefreshHeader:1.0.5.1'
//RecyclerView
? ? implementation 'com.android.support:recyclerview-v7:28.0.0-alpha3'
? ? implementation 'com.android.support:design:28.0.0-alpha3'
//RecyclerView 上啦加載下拉刷新 https://github.com/XRecyclerView/XRecyclerView
? ? implementation('com.jcodecraeer:xrecyclerview:1.5.9') {
? ? ? ? exclude group: 'com.android.support'
? ? }
//狀態(tài)欄
? ? implementation 'com.jaeger.statusbarutil:library:1.5.1'
//網絡請求重要的依賴
//Retrofit
? ? implementation 'com.squareup.retrofit2:retrofit:2.1.0'
? ? implementation 'com.squareup.retrofit2:converter-gson:2.1.0'
//rxjava
? ? implementation 'com.squareup.retrofit2:adapter-rxjava2:2.2.0'
? ? implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
//日志攔截器
? ? implementation 'com.squareup.okhttp3:logging-interceptor:3.6.0'
? ? implementation 'com.squareup.okhttp3:okhttp:3.5.0'
//ButterKnife
? ? implementation 'com.jakewharton:butterknife:8.8.1'
? ? annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
//跑馬燈
? ? implementation 'com.sunfusheng:marqueeview:1.3.3'
//Glide 加載圖片
? ? implementation 'com.github.bumptech.glide:glide:4.7.1'
//GreenDao
? ? implementation 'org.greenrobot:greendao:3.0.1'
? ? implementation 'org.greenrobot:greendao-generator:3.0.0'
?
?
?
?
?
package com.baiwei.tianlong.zhoukao_moni.adapter;
import android.content.Context;
import android.net.Uri;
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.baiwei.tianlong.zhoukao_moni.R;
import com.baiwei.tianlong.zhoukao_moni.mvp.main.model.beans.LieBiaoBeans;
import com.facebook.drawee.view.SimpleDraweeView;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
public class LieBiaoAdapter extends RecyclerView.Adapter<LieBiaoAdapter.LieBiaoHolder> {
? ? private List<LieBiaoBeans.DataBean> data;
? ? private Context context;
? ? public LieBiaoAdapter(List<LieBiaoBeans.DataBean> data, Context context) {
? ? ? ? this.data = data;
? ? ? ? this.context = context;
? ? }
? ? @NonNull
? ? @Override
? ? public LieBiaoHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
? ? ? ? View view = LayoutInflater.from(viewGroup.getContext())
? ? ? ? ? ? ? ? .inflate(R.layout.liebiao, viewGroup, false);
? ? ? ? return new LieBiaoHolder(view);
? ? }
? ? @Override
? ? public void onBindViewHolder(@NonNull LieBiaoHolder lieBiaoHolder, final int i) {
? ? ? ? String name = data.get(i).getName();
? ? ? ? String createtime = data.get(i).getCreatetime();
? ? ? ? String icon = data.get(i).getIcon();
? ? ? ? lieBiaoHolder.frescoLiebiao.setImageURI(Uri.parse(icon));
? ? ? ? lieBiaoHolder.liebiaoText.setText(name);
? ? ? ? lieBiaoHolder.liebiaoText1.setText(createtime);
? ? ? ? lieBiaoHolder.itemView.setOnClickListener(new View.OnClickListener() {
? ? ? ? ? ? @Override
? ? ? ? ? ? public void onClick(View view) {
? ? ? ? ? ? ? ? if (onItemLieBiaoInstance!=null){
? ? ? ? ? ? ? ? ? ?onItemLieBiaoInstance.onItemClick(view,i);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? });
? ? }
? ? @Override
? ? public int getItemCount() {
? ? ? ? return data == null ? 0 : data.size();
? ? }
? ? public class LieBiaoHolder extends RecyclerView.ViewHolder {
? ? ? ? @BindView(R.id.fresco_liebiao)
? ? ? ? SimpleDraweeView frescoLiebiao;
? ? ? ? @BindView(R.id.liebiao_text)
? ? ? ? TextView liebiaoText;
? ? ? ? @BindView(R.id.liebiao_text1)
? ? ? ? TextView liebiaoText1;
? ? ? ? public LieBiaoHolder(@NonNull View itemView) {
? ? ? ? ? ? super(itemView);
? ? ? ? ? ? ButterKnife.bind(this,itemView);
? ? ? ? }
? ? }
? ? ?OnItemLieBiaoInstance ?onItemLieBiaoInstance;
? ? public interface OnItemLieBiaoInstance {
? ? ? ? void onItemClick(View view , int position);
? ? }
? ? public void setOnItemLieBiaoInstance(OnItemLieBiaoInstance onItemLieBiaoInstance) {
? ? ? ? this.onItemLieBiaoInstance = onItemLieBiaoInstance;
? ? }
}
?SheJiShiAdapter類
package com.baiwei.tianlong.zhoukao_moni.adapter;
import android.content.Context;
import android.net.Uri;
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.baiwei.tianlong.zhoukao_moni.R;
import com.baiwei.tianlong.zhoukao_moni.mvp.main.model.beans.SheJiBeans;
import com.facebook.drawee.view.SimpleDraweeView;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
public class SheJiShiAdapter extends RecyclerView.Adapter<SheJiShiAdapter.SheJiHolder> {
? ? private List<SheJiBeans.DataBean.DisplayBean> display;
? ? private Context context;
? ? public SheJiShiAdapter(List<SheJiBeans.DataBean.DisplayBean> display, Context context) {
? ? ? ? this.display = display;
? ? ? ? this.context = context;
? ? }
? ? @NonNull
? ? @Override
? ? public SheJiHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
? ? ? ? View view = LayoutInflater.from(viewGroup.getContext())
? ? ? ? ? ? ? ? .inflate(R.layout.shejiitem, viewGroup, false);
? ? ? ? return new SheJiHolder(view);
? ? }
? ? @Override
? ? ? ? public void onBindViewHolder(@NonNull SheJiHolder sheJiHolder, int i) {
? ? ? ? String avatar = display.get(i).getAvatar();
? ? ? ? String nick_name = display.get(i).getNick_name();
? ? ? ? sheJiHolder.frescoSheji.setImageURI(Uri.parse(avatar));
? ? ? ? sheJiHolder.shejiText.setText(nick_name);
? ? }
? ? @Override
? ? public int getItemCount() {
? ? ? ? return display == null ? 0 : display.size();
? ? }
? ? public class SheJiHolder extends RecyclerView.ViewHolder {
? ? ? ? @BindView(R.id.fresco_sheji)
? ? ? ? SimpleDraweeView frescoSheji;
? ? ? ? @BindView(R.id.sheji_text)
? ? ? ? TextView shejiText;
? ? ? ? public SheJiHolder(@NonNull View itemView) {
? ? ? ? ? ? super(itemView);
? ? ? ? ? ? ButterKnife.bind(this,itemView);
? ? ? ? }
? ? }
}
?
package com.baiwei.tianlong.zhoukao_moni.adapter;
import android.content.Context;
import android.net.Uri;
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.baiwei.tianlong.zhoukao_moni.R;
import com.baiwei.tianlong.zhoukao_moni.mvp.tusan.model.beans.TuSanBeans;
import com.facebook.drawee.view.SimpleDraweeView;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
public class TuSanAdapter extends RecyclerView.Adapter<TuSanAdapter.TuSanHodel> {
? ? private List<TuSanBeans.DataBean> data;
? ? private Context context;
? ? public TuSanAdapter(List<TuSanBeans.DataBean> data, Context context) {
? ? ? ? this.data = data;
? ? ? ? this.context = context;
? ? }
? ? @NonNull
? ? @Override
? ? public TuSanHodel onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
? ? ? ? View view = LayoutInflater.from(viewGroup.getContext())
? ? ? ? ? ? ? ? .inflate(R.layout.tusan_item, viewGroup, false);
? ? ? ? return new TuSanHodel(view);
? ? }
? ? @Override
? ? public void onBindViewHolder(@NonNull TuSanHodel tuSanHodel, int i) {
? ? ? ? String image_url = data.get(i).getImages().split("\\|")[0];
? ? ? ? String title = data.get(i).getTitle();
? ? ? ? String subhead = data.get(i).getSubhead();
? ? ? ? tuSanHodel.frescoTusan.setImageURI(Uri.parse(image_url));
? ? ? ? tuSanHodel.tusanText.setText(title);
? ? ? ? tuSanHodel.tusanText1.setText(subhead);
? ? }
? ? @Override
? ? public int getItemCount() {
? ? ? ? return data == null ? 0 : data.size();
? ? }
? ? public class TuSanHodel extends RecyclerView.ViewHolder {
? ? ? ? @BindView(R.id.fresco_tusan)
? ? ? ? SimpleDraweeView frescoTusan;
? ? ? ? @BindView(R.id.tusan_text)
? ? ? ? TextView tusanText;
? ? ? ? @BindView(R.id.tusan_text1)
? ? ? ? TextView tusanText1;
? ? ? ? public TuSanHodel(@NonNull View itemView) {
? ? ? ? ? ? super(itemView);
? ? ? ? ? ? ButterKnife.bind(this,itemView);
? ? ? ? }
? ? }
}
package com.baiwei.tianlong.zhoukao_moni.base;
import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import butterknife.ButterKnife;
public abstract class BaseActivity<P extends BasePresenter> extends AppCompatActivity {
? ? //注入基類
? ? protected ?P presenter;
? ? @Override
? ? protected void onCreate(@Nullable Bundle savedInstanceState) {
? ? ? ? super.onCreate(savedInstanceState);
? ? ? ? setContentView(provideLayoutId());
? ? ? ? //ButterKnitfe
? ? ? ? ButterKnife.bind(provideBindView());
? ? ? ? initView();
? ? ? ? presenter = providePresenter();
? ? ? ? initData();
? ? ? ? initListener();
? ? }
? ? protected abstract P providePresenter();
? ? protected void initListener() {
? ? }
? ? protected void initData() {
? ? }
? ? protected ?void initView(){
? ? };
? ? protected abstract Activity provideBindView();
? ? protected abstract int provideLayoutId();
}
?
?
package com.baiwei.tianlong.zhoukao_moni.base;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import butterknife.ButterKnife;
import butterknife.Unbinder;
public abstract class BaseFragment<P extends BasePresenter> extends Fragment {
? ? protected ?P prsenter;
? ? private View view;
? ? private Unbinder unbinder;
? ? @Nullable
? ? @Override
? ? public android.view.View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
? ? ? ? //加載布局
? ? ? ? if (view == null){
? ? ? ? ? ? view = inflater.inflate(provideFragmentLayoutID(), container, false);
? ? ? ? }
? ? ? ? ViewGroup parent = (ViewGroup) view.getParent();
? ? ? ? if (parent!= null){
? ? ? ? ? ? parent.removeView(view);
? ? ? ? }
? ? ? ? //ButterKifer
? ? ? ? unbinder = ButterKnife.bind(provideBindView(),view);
? ? ? ? return view;
? ? }
? ? protected abstract Object provideBindView();
? ? protected abstract int provideFragmentLayoutID();
? ? @Override
? ? public void onActivityCreated(@Nullable Bundle savedInstanceState) {
? ? ? ? super.onActivityCreated(savedInstanceState);
? ? ? ? prsenter = providePresenter();
? ? ? ? //初始化
? ? ? ? initView(view);
? ? ? ? initData();
? ? ? ? initListener();
? ? }
? ? protected void initListener() {
? ? }
? ? protected void initData() {
? ? }
? ? protected void initView(View view) {
? ? }
? ? protected abstract P providePresenter();
? ? @Override
? ? public void onDestroy() {
? ? ? ? prsenter.onDestory();
? ? ? ? super.onDestroy();
? ? }
? ? @Override
? ? public void onDestroyView() {
? ? ? ? super.onDestroyView();
? ? ? ? //Fresco 清理緩存
// ? ? ? ?ImagePipeline imagePipeline = Fresco.getImagePipeline();
// ? ? ? ?imagePipeline.clearMemoryCaches();
// ? ? ? ?imagePipeline.clearDiskCaches();
// ? ? ? ?imagePipeline.clearCaches();
? ? ? ? unbinder.unbind();
? ? }
}
?
package com.baiwei.tianlong.zhoukao_moni.base;
import android.content.Context;
import com.baiwei.tianlong.zhoukao_moni.App;
import io.reactivex.disposables.CompositeDisposable;
public abstract class BasePresenter<V extends View> {
? ? protected V view;
? ? //取消訂閱
? ? protected CompositeDisposable compositeDisposable = new CompositeDisposable();
? ? public BasePresenter(V view) {
? ? ? ? this.view = view;
? ? ? ? initModel();
? ? }
? ? //注入model方法
? ? protected ?abstract ? void initModel();
? ? //處理內存溢出
? ? void onDestory(){
? ? ? ? view = null;
? ? ? ? compositeDisposable.clear();
? ? }
? ? protected Context context(){
? ? ? ? if (view!=null && view.context()!=null){
? ? ? ? ? ? return view.context();
? ? ? ? }else {
? ? ? ? ? ? return App.getAppContext();
? ? ? ? }
? ? }
}
?
package com.baiwei.tianlong.zhoukao_moni.utils;
public ?class ConstantApi {
? ? public static final String BASE_URL="https://www.zhaoapi.cn/";
? ? public static final String AD_URL="quarter/getAd";
? ? public static final String CATAGORY_URL="product/getCatagory";
? ? public static final String PRODUCTS_URL="product/getProducts";
? ? public static final String BASE_URL1="https://app.tuozhe8.com/";
? ? public static final String SHE_JI="api.php/api/Lists/designer?token=&version=1.7";
}
?
package com.baiwei.tianlong.zhoukao_moni.utils;
import android.util.Log;
import java.util.concurrent.TimeUnit;
import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
public class RetrofitcManager {
? ? private final Retrofit retrofit;
? ? private static class SingHolder{
? ? ? ? private static final RetrofitcManager INSTANT = new RetrofitcManager(ConstantApi.BASE_URL);
? ? ? ? private static final RetrofitcManager INSTANT1 = new RetrofitcManager(ConstantApi.BASE_URL1);
? ? }
? ? public static RetrofitcManager getDefault(){
? ? ? ? return SingHolder.INSTANT;
? ? }
? ? public static RetrofitcManager getDefault1(){
? ? ? ? return SingHolder.INSTANT1;
? ? }
? ? public RetrofitcManager(String baseUrl) {
? ? ? ? this.retrofit = new Retrofit.Builder()
? ? ? ? ? ? ? ? ? ? ? ? ? ? .baseUrl(baseUrl)
? ? ? ? ? ? ? ? ? ? ? ? ? ? .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
? ? ? ? ? ? ? ? ? ? ? ? ? ? .addConverterFactory(GsonConverterFactory.create())
? ? ? ? ? ? ? ? ? ? ? ? ? ? .build();
? ? }
? ? //網絡攔截器
? ? private OkHttpClient buildOkHttpClient(){
? ? ? ? HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {
? ? ? ? ? ? @Override
? ? ? ? ? ? public void log(String message) {
? ? ? ? ? ? ? ? Log.i("xxx", "日志信息:" + message);
? ? ? ? ? ? }
? ? ? ? });
? ? ? ? interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
? ? ? ? return new OkHttpClient.Builder()
? ? ? ? ? ? ? ? .addInterceptor(interceptor)
? ? ? ? ? ? ? ? .connectTimeout(5, TimeUnit.SECONDS)
? ? ? ? ? ? ? ? .writeTimeout(5, TimeUnit.SECONDS)
? ? ? ? ? ? ? ? .readTimeout(5, TimeUnit.SECONDS)
? ? ? ? ? ? ? ? .addInterceptor(interceptor)
? ? ? ? ? ? ? ? .build();
? ? }
? ? public <T> T create(Class<T> tClass) {
? ? ? ? return retrofit.create(tClass);
? ? }
}
?
public interface ModelApi {
? ? //輪播
? ? @GET(ConstantApi.AD_URL)
? ? Flowable<LunBoBeans> getLunBo();
? ? //設計
? ? @GET(ConstantApi.SHE_JI)
? ? Flowable<SheJiBeans> getSheJi();
? ? //列表
? ? @GET(ConstantApi.CATAGORY_URL)
? ? Flowable<LieBiaoBeans> getLieBiao();
}
?
package com.baiwei.tianlong.zhoukao_moni.mvp.main.model;
import com.baiwei.tianlong.zhoukao_moni.mvp.main.model.beans.LieBiaoBeans;
import com.baiwei.tianlong.zhoukao_moni.mvp.main.model.beans.LunBoBeans;
import com.baiwei.tianlong.zhoukao_moni.mvp.main.model.beans.SheJiBeans;
import com.baiwei.tianlong.zhoukao_moni.utils.RetrofitcManager;
import io.reactivex.Flowable;
public class ModelApiTask implements ModelApi {
? ? @Override
? ? public Flowable<LunBoBeans> getLunBo() {
? ? ? ? return RetrofitcManager.getDefault().create(ModelApi.class).getLunBo();
? ? }
? ? @Override
? ? public Flowable<SheJiBeans> getSheJi() {
? ? ? ? return RetrofitcManager.getDefault1().create(ModelApi.class).getSheJi();
? ? }
? ? @Override
? ? public Flowable<LieBiaoBeans> getLieBiao() {
? ? ? ? return RetrofitcManager.getDefault().create(ModelApi.class).getLieBiao();
? ? }
}
?
package com.baiwei.tianlong.zhoukao_moni.mvp.main.presenter;
import com.baiwei.tianlong.zhoukao_moni.base.BasePresenter;
import com.baiwei.tianlong.zhoukao_moni.mvp.main.model.ModelApiTask;
import com.baiwei.tianlong.zhoukao_moni.mvp.main.model.beans.LieBiaoBeans;
import com.baiwei.tianlong.zhoukao_moni.mvp.main.model.beans.LunBoBeans;
import com.baiwei.tianlong.zhoukao_moni.mvp.main.model.beans.SheJiBeans;
import com.baiwei.tianlong.zhoukao_moni.mvp.tusan.model.beans.TuSanBeans;
import com.baiwei.tianlong.zhoukao_moni.mvp.main.view.ZhouKaoView;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
import io.reactivex.subscribers.DisposableSubscriber;
public class ZhouKaoPresenter extends BasePresenter<ZhouKaoView> {
? ? private ModelApiTask modelApiTask;
? ? public ZhouKaoPresenter(ZhouKaoView view) {
? ? ? ? super(view);
? ? }
? ? @Override
? ? protected void initModel() {
? ? ? ? modelApiTask = new ModelApiTask();
? ? }
? ? //輪播圖
? ? public void getLunBo(){
? ? ? ? modelApiTask.getLunBo()
? ? ? ? ? ? ? ? ? ? .subscribeOn(Schedulers.io())
? ? ? ? ? ? ? ? ? ? .observeOn(AndroidSchedulers.mainThread())
? ? ? ? ? ? ? ? ? ? .subscribe(new DisposableSubscriber<LunBoBeans>() {
? ? ? ? ? ? ? ? ? ? ? ? @Override
? ? ? ? ? ? ? ? ? ? ? ? public void onNext(LunBoBeans lunBoBeans) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? if ("0".equals(lunBoBeans.getCode())){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (view!=null){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? view.getLunBoSuccess(lunBoBeans);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? }else {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (view!=null){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? view.getLunBoError(lunBoBeans.getMsg());
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? @Override
? ? ? ? ? ? ? ? ? ? ? ? public void onError(Throwable t) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? if (view!=null){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? view.getLunBoError(t.toString());
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? @Override
? ? ? ? ? ? ? ? ? ? ? ? public void onComplete() {
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? });
? ? }
? ? //列表
? ? public void getLieBiao(){
? ? ? ? modelApiTask.getLieBiao()
? ? ? ? ? ? ? ? ? ? ?.subscribeOn(Schedulers.io())
? ? ? ? ? ? ? ? ? ? ?.observeOn(AndroidSchedulers.mainThread())
? ? ? ? ? ? ? ? ? ? .subscribe(new DisposableSubscriber<LieBiaoBeans>() {
? ? ? ? ? ? ? ? ? ? @Override
? ? ? ? ? ? ? ? ? ? public void onNext(LieBiaoBeans lieBiaoBeans) {
? ? ? ? ? ? ? ? ? ? ? ? if ("0".equals(lieBiaoBeans.getCode())){
? ? ? ? ? ? ? ? ? ? ? ? ? ? if (view!=null){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? view.getLieBiaoSuccess(lieBiaoBeans);
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }else {
? ? ? ? ? ? ? ? ? ? ? ? ? ? if (view!=null){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? view.getLieBiaoError(lieBiaoBeans.getMsg());
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? @Override
? ? ? ? ? ? ? ? ? ? public void onError(Throwable t) {
? ? ? ? ? ? ? ? ? ? ? ? if (view!=null){
? ? ? ? ? ? ? ? ? ? ? ? ? ? view.getLieBiaoError(t.toString());
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? @Override
? ? ? ? ? ? ? ? ? ? public void onComplete() {
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? });
? ? }
? ? //設計
? ? public void getSheJi(){
? ? ? ? modelApiTask.getSheJi()
? ? ? ? ? ? ? ? .subscribeOn(Schedulers.io())
? ? ? ? ? ? ? ? .observeOn(AndroidSchedulers.mainThread())
? ? ? ? ? ? ? ? .subscribe(new DisposableSubscriber<SheJiBeans>() {
? ? ? ? ? ? ? ? ? ? @Override
? ? ? ? ? ? ? ? ? ? public void onNext(SheJiBeans sheJiBeans) {
? ? ? ? ? ? ? ? ? ? ? ? if ("1".equals(sheJiBeans.getCode())){
? ? ? ? ? ? ? ? ? ? ? ? ? ? if (view!=null){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? view.getSheJiSuccess(sheJiBeans);
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }else {
? ? ? ? ? ? ? ? ? ? ? ? ? ? if (view!=null){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? view.getSheJiError(sheJiBeans.getMessage());
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? @Override
? ? ? ? ? ? ? ? ? ? public void onError(Throwable t) {
? ? ? ? ? ? ? ? ? ? ? ? if (view!=null){
? ? ? ? ? ? ? ? ? ? ? ? ? ? view.getSheJiError(t.toString());
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? @Override
? ? ? ? ? ? ? ? ? ? public void onComplete() {
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? });
? ? }
}
?
package com.baiwei.tianlong.zhoukao_moni.mvp.main.view;
import com.baiwei.tianlong.zhoukao_moni.base.View;
import com.baiwei.tianlong.zhoukao_moni.mvp.main.model.beans.LieBiaoBeans;
import com.baiwei.tianlong.zhoukao_moni.mvp.main.model.beans.LunBoBeans;
import com.baiwei.tianlong.zhoukao_moni.mvp.main.model.beans.SheJiBeans;
import com.baiwei.tianlong.zhoukao_moni.mvp.tusan.model.beans.TuSanBeans;
public interface ZhouKaoView extends View {
? ? //輪播
? ? void getLunBoSuccess(LunBoBeans lunBoBeans);
? ? void getLunBoError(String error);
? ? //設計師
? ? void ?getSheJiSuccess(SheJiBeans sheJiBeans);
? ? void getSheJiError(String error);
? ? //列表
? ? void getLieBiaoSuccess(LieBiaoBeans lieBiaoBeans);
? ? void getLieBiaoError(String error);
}
?
?
package com.baiwei.tianlong.zhoukao_moni.mvp.tusan.model;
import com.baiwei.tianlong.zhoukao_moni.mvp.tusan.model.beans.TuSanBeans;
import com.baiwei.tianlong.zhoukao_moni.utils.ConstantApi;
import io.reactivex.Flowable;
import retrofit2.http.GET;
import retrofit2.http.Query;
public interface TuSanApi {
? ? //圖三
? ? @GET(ConstantApi.PRODUCTS_URL)
? ? Flowable<TuSanBeans> getTuSans(@Query("pscid") int pscid);
}
?
package com.baiwei.tianlong.zhoukao_moni.mvp.tusan.model;
import com.baiwei.tianlong.zhoukao_moni.mvp.main.model.ModelApi;
import com.baiwei.tianlong.zhoukao_moni.mvp.tusan.model.beans.TuSanBeans;
import com.baiwei.tianlong.zhoukao_moni.utils.RetrofitcManager;
import io.reactivex.Flowable;
public class TuSanApiTask implements TuSanApi {
? ? @Override
? ? public Flowable<TuSanBeans> getTuSans(int pscid) {
? ? ? ? return RetrofitcManager.getDefault().create(TuSanApi.class).getTuSans(pscid);
? ? }
}
?
?
package com.baiwei.tianlong.zhoukao_moni.mvp.tusan.presenter;
import com.baiwei.tianlong.zhoukao_moni.base.BasePresenter;
import com.baiwei.tianlong.zhoukao_moni.mvp.main.view.ZhouKaoView;
import com.baiwei.tianlong.zhoukao_moni.mvp.tusan.model.TuSanApiTask;
import com.baiwei.tianlong.zhoukao_moni.mvp.tusan.model.beans.TuSanBeans;
import com.baiwei.tianlong.zhoukao_moni.mvp.tusan.view.TuSanView;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
import io.reactivex.subscribers.DisposableSubscriber;
public class TuSanPresenter extends BasePresenter<TuSanView> {
? ? private TuSanApiTask tuSanApiTask;
? ? public TuSanPresenter(TuSanView view) {
? ? ? ? super(view);
? ? }
? ? @Override
? ? protected void initModel() {
? ? ? ? tuSanApiTask = new TuSanApiTask();
? ? }
? ? //圖三
? ? public void getTuSan(int pscid){
? ? ? ? tuSanApiTask.getTuSans(pscid)
? ? ? ? ? ? ? ? .subscribeOn(Schedulers.io())
? ? ? ? ? ? ? ? .observeOn(AndroidSchedulers.mainThread())
? ? ? ? ? ? ? ? .subscribe(new DisposableSubscriber<TuSanBeans>() {
? ? ? ? ? ? ? ? ? ? @Override
? ? ? ? ? ? ? ? ? ? public void onNext(TuSanBeans tuSanBeans) {
? ? ? ? ? ? ? ? ? ? ? ? if ("0".equals(tuSanBeans.getCode())){
? ? ? ? ? ? ? ? ? ? ? ? ? ? if (view!=null){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? view.getTuSanSuccess(tuSanBeans);
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }else {
? ? ? ? ? ? ? ? ? ? ? ? ? ? if (view!=null){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? view.getTuSanError(tuSanBeans.getMsg());
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? @Override
? ? ? ? ? ? ? ? ? ? public void onError(Throwable t) {
? ? ? ? ? ? ? ? ? ? ? ? if (view!=null){
? ? ? ? ? ? ? ? ? ? ? ? ? ? view.getTuSanError(t.toString());
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? @Override
? ? ? ? ? ? ? ? ? ? public void onComplete() {
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? });
? ? }
}
?
package com.baiwei.tianlong.zhoukao_moni.mvp.tusan.view;
import com.baiwei.tianlong.zhoukao_moni.base.View;
import com.baiwei.tianlong.zhoukao_moni.mvp.tusan.model.beans.TuSanBeans;
public interface TuSanView extends View{
? ? //圖三
? ? void getTuSanSuccess(TuSanBeans tuSanBeans);
? ? void getTuSanError(String error);
}
?
package com.baiwei.tianlong.zhoukao_moni;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import com.baiwei.tianlong.zhoukao_moni.adapter.LieBiaoAdapter;
import com.baiwei.tianlong.zhoukao_moni.adapter.SheJiShiAdapter;
import com.baiwei.tianlong.zhoukao_moni.base.BaseActivity;
import com.baiwei.tianlong.zhoukao_moni.mvp.main.model.beans.LieBiaoBeans;
import com.baiwei.tianlong.zhoukao_moni.mvp.main.model.beans.LunBoBeans;
import com.baiwei.tianlong.zhoukao_moni.mvp.main.model.beans.SheJiBeans;
import com.baiwei.tianlong.zhoukao_moni.mvp.tusan.model.beans.TuSanBeans;
import com.baiwei.tianlong.zhoukao_moni.mvp.main.presenter.ZhouKaoPresenter;
import com.baiwei.tianlong.zhoukao_moni.mvp.main.view.ZhouKaoView;
import com.facebook.drawee.view.SimpleDraweeView;
import com.youth.banner.Banner;
import com.youth.banner.BannerConfig;
import com.youth.banner.Transformer;
import com.youth.banner.listener.OnBannerListener;
import com.youth.banner.loader.ImageLoader;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
public class MainActivity extends BaseActivity<ZhouKaoPresenter> implements ZhouKaoView {
? ? private static final String TAG = "MainAtivity";
? ? @BindView(R.id.banner)
? ? Banner banner;
? ? @BindView(R.id.sheji)
? ? RecyclerView sheji;
? ? @BindView(R.id.liebiao)
? ? RecyclerView liebiao;
? ? private List<String> listLunBo = new ArrayList<>();
? ? private List<String> titles = new ArrayList<>();
? ? //注入p
? ? @Override
? ? protected ZhouKaoPresenter providePresenter() {
? ? ? ? return new ZhouKaoPresenter(this);
? ? }
? ? @Override
? ? protected Activity provideBindView() {
? ? ? ? return this;
? ? }
? ? @Override
? ? protected int provideLayoutId() {
? ? ? ? return R.layout.activity_main;
? ? }
? ? @Override
? ? protected void initData() {
? ? ? ? super.initData();
? ? ? ? if (presenter!=null){
? ? ? ? ? ? presenter.getLunBo();
? ? ? ? }
? ? }
? ? //輪播
? ? @Override
? ? public void getLunBoSuccess(final LunBoBeans lunBoBeans) {
? ? ? ? List<LunBoBeans.DataBean> data = lunBoBeans.getData();
? ? ? ? for (int i = 0; i < data.size(); i++) {
? ? ? ? ? ? String icon = data.get(i).getIcon();
? ? ? ? ? ? String title = data.get(i).getTitle();
? ? ? ? ? ? String url = data.get(i).getUrl();
? ? ? ? ? ? listLunBo.add(icon);
? ? ? ? ? ? titles.add(title);
? ? ? ? }
? ? ? ? banner.setImageLoader(new MyLoader());
? ? ? ? banner.setImages(listLunBo);
? ? ? ? banner.setDelayTime(2000);
? ? ? ? banner.setBannerTitles(titles);
? ? ? ? banner.setBannerAnimation(Transformer.BackgroundToForeground);
? ? ? ? banner.setBannerStyle(BannerConfig.NUM_INDICATOR_TITLE);
? ? ? ? banner.start();
? ? ? ? banner.setOnBannerListener(new OnBannerListener() {
? ? ? ? ? ? @Override
? ? ? ? ? ? public void OnBannerClick(int position) {
? ? ? ? ? ? ? ? final String url = lunBoBeans.getData().get(position).getUrl();
? ? ? ? ? ? ? ? Intent intent ?= new Intent(MainActivity.this,WebActivity.class);
? ? ? ? ? ? ? ? intent.putExtra("url",url);
? ? ? ? ? ? ? ? startActivity(intent);
? ? ? ? ? ? }
? ? ? ? });
? ? ? ? presenter.getSheJi();
? ? }
? ? @Override
? ? public void getLunBoError(String error) {
? ? ? ? Log.d(TAG, "getLunBoError: " + error);
? ? }
? ? //設計師
? ? @Override
? ? public void getSheJiSuccess(SheJiBeans sheJiBeans) {
? ? ? ? List<SheJiBeans.DataBean.DisplayBean> display = sheJiBeans.getData().getDisplay();
? ? ? ??
? ? ? ? LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
? ? ? ? linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
? ? ? ? sheji.setLayoutManager(linearLayoutManager);
? ? ? ? SheJiShiAdapter adapter = new SheJiShiAdapter(display,this);
? ? ? ? sheji.setAdapter(adapter);
? ? ? ? presenter.getLieBiao();
? ? ? ??
? ? }
? ? @Override
? ? public void getSheJiError(String error) {
? ? ? ? Log.d(TAG, "getSheJiError: " + error);
? ? }
? ??
? ??
? ? //列表
? ? @Override
? ? public void getLieBiaoSuccess(LieBiaoBeans lieBiaoBeans) {
? ? ? ? List<LieBiaoBeans.DataBean> data = lieBiaoBeans.getData();
? ? ? ? LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
? ? ? ? linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
? ? ? ? liebiao.setLayoutManager(linearLayoutManager);
? ? ? ? LieBiaoAdapter lieBiaoAdapter = new LieBiaoAdapter(data,this);
? ? ? ? liebiao.setAdapter(lieBiaoAdapter);
? ? ? ? lieBiaoAdapter.setOnItemLieBiaoInstance(new LieBiaoAdapter.OnItemLieBiaoInstance() {
? ? ? ? ? ? @Override
? ? ? ? ? ? public void onItemClick(View view, int position) {
? ? ? ? ? ? ? ? Intent intent ?= new Intent(MainActivity.this,TuSanActivity.class);
? ? ? ? ? ? ? ? startActivity(intent);
? ? ? ? ? ? }
? ? ? ? });
? ? }
? ? @Override
? ? public void getLieBiaoError(String error) {
? ? ? ? Log.d(TAG, "getLieBiaoError: " + error);
? ? }
? ? @Override
? ? public Context context() {
? ? ? ? return null;
? ? }
? ? @Override
? ? protected void onCreate(Bundle savedInstanceState) {
? ? ? ? super.onCreate(savedInstanceState);
? ? ? ? // TODO: add setContentView(...) invocation
? ? ? ? ButterKnife.bind(this);
? ? }
? ? //圖片加載
? ? private class MyLoader extends ImageLoader {
? ? ? ? @Override
? ? ? ? public void displayImage(Context context, Object path, ImageView imageView) {
? ? ? ? ? ? imageView.setImageURI(Uri.parse((String) path));
? ? ? ? }
? ? ? ? @Override
? ? ? ? public ImageView createImageView(Context context) {
? ? ? ? ? ? SimpleDraweeView simpleDraweeView = new SimpleDraweeView(context);
? ? ? ? ? ? return simpleDraweeView;
? ? ? ? }
? ? }
}
?
package com.baiwei.tianlong.zhoukao_moni;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import com.baiwei.tianlong.zhoukao_moni.adapter.TuSanAdapter;
import com.baiwei.tianlong.zhoukao_moni.base.BaseActivity;
import com.baiwei.tianlong.zhoukao_moni.mvp.tusan.model.beans.TuSanBeans;
import com.baiwei.tianlong.zhoukao_moni.mvp.tusan.presenter.TuSanPresenter;
import com.baiwei.tianlong.zhoukao_moni.mvp.tusan.view.TuSanView;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
public class TuSanActivity extends BaseActivity<TuSanPresenter> implements TuSanView {
? ? @BindView(R.id.tusan)
? ? RecyclerView tusan;
? ? @Override
? ? protected TuSanPresenter providePresenter() {
? ? ? ? return new TuSanPresenter(this);
? ? }
? ? @Override
? ? protected Activity provideBindView() {
? ? ? ? return this;
? ? }
? ? @Override
? ? protected int provideLayoutId() {
? ? ? ? return R.layout.activity_tu_san;
? ? }
? ? @Override
? ? protected void initData() {
? ? ? ? super.initData();
? ? ? ? presenter.getTuSan(1);
? ? }
? ? @Override
? ? public void getTuSanSuccess(TuSanBeans tuSanBeans) {
? ? ? ? List<TuSanBeans.DataBean> data = tuSanBeans.getData();
? ? ? ? LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
? ? ? ? linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
? ? ? ? tusan.setLayoutManager(linearLayoutManager);
? ? ? ? TuSanAdapter tuSanAdapter = new TuSanAdapter(data, this);
? ? ? ? tusan.setAdapter(tuSanAdapter);
? ? }
? ? @Override
? ? public void getTuSanError(String error) {
? ? }
? ? @Override
? ? public Context context() {
? ? ? ? return this;
? ? }
? ? @Override
? ? protected void onCreate(Bundle savedInstanceState) {
? ? ? ? super.onCreate(savedInstanceState);
? ? ? ? // TODO: add setContentView(...) invocation
? ? ? ? ButterKnife.bind(this);
? ? }
}
?
?
package com.baiwei.tianlong.zhoukao_moni;
import android.app.AlertDialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.webkit.JsResult;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.Toast;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
public class WebActivity extends AppCompatActivity {
? ? private static final String TAG = "WebAtivity";
? ? @BindView(R.id.web)
? ? WebView web;
? ? @BindView(R.id.fanhui)
? ? Button fanhui;
? ? @Override
? ? protected void onCreate(Bundle savedInstanceState) {
? ? ? ? super.onCreate(savedInstanceState);
? ? ? ? setContentView(R.layout.activity_web);
? ? ? ? ButterKnife.bind(this);
? ? ? ? int taskId = getTaskId();
? ? ? ? Intent intent = getIntent();
? ? ? ? String url = intent.getStringExtra("url");
? ? ? ? Toast.makeText(this,url,Toast.LENGTH_SHORT).show();
? ? ? ? web.loadUrl(url);
? ? ? ? WebSettings webSettings = web.getSettings();
? ? ? ? webSettings.setJavaScriptEnabled(true);
? ? }
? ? @OnClick(R.id.fanhui)
? ? public void onViewClicked() {
? ? ? ? Intent intent = new Intent();
? ? ? ? setResult(2,intent);
? ? ? ? finish();
? ? }
? ? @Override
? ? protected void onDestroy() {
? ? ? ? super.onDestroy();
? ? ? ? web.removeAllViews();
? ? ? ? web.destroy();
? ? }
}
?
總結
以上是生活随笔為你收集整理的抽基类+MVP+Retrofit+Rxjava+适配器+Recyclerview展示数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: symbian error stary
- 下一篇: react插入html