MVP Retrifit

public interface GetListenerShowview {
    public void getdata(lisenerbean lisenerbean);
}
public class GetListenListModel {
    public void finddata(String uri, final OnNetListener onNetListener){

       // ApiService apiService = RetrofitUtils.getRetrofit(Api.baseurl).create(ApiService.class);
        ApiService apiService = RetrofitUtils.getInstance().getApiService(Api.baseurl, ApiService.class);
        Observable<lisenerbean> observable = apiService.getlist(uri);

        observable.subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Subscriber<lisenerbean>() {
                    @Override
                    public void onCompleted() {

                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onNext(lisenerbean lisenerbean) {
                        onNetListener.OnSuccess(lisenerbean);
                    }
                });
    }
}

public class ListenListPresenter implements OnNetListener{
    private GetListenerShowview getListenerShowview;
    private GetListenListModel getListenListModel;

    public ListenListPresenter(GetListenerShowview getListenerShowview) {
        this.getListenerShowview = getListenerShowview;
        getListenListModel = new GetListenListModel();
    }

    public void relevance(String uri){
        getListenListModel.finddata(uri,this);
    }

    @Override
    public void OnSuccess(lisenerbean lisenerbean) {
        getListenerShowview.getdata(lisenerbean);
    }
}

public interface OnNetListener {
    public void OnSuccess(lisenerbean lisenerbean);
}

public class Api {
    //http://result.eolinker.com/iYXEPGn4e9c6dafce6e5cdd23287d2bb136ee7e9194d3e9?uri=vedio
    public static final String baseurl = "http://result.eolinker.com/";
}

public interface ApiService {

    @GET("iYXEPGn4e9c6dafce6e5cdd23287d2bb136ee7e9194d3e9")
    Observable<lisenerbean> getlist(@Query("uri")String uri);

}

public class GlideImageLoader extends ImageLoader {

    @Override
    public void displayImage(Context context, Object path, ImageView imageView) {
        /**
         注意:
         1.圖片加載器由自己選擇,這裏不限制,只是提供幾種使用方法
         2.返回的圖片路徑爲Object類型,由於不能確定你到底使用的那種圖片加載器,
         傳輸的到的是什麼格式,那麼這種就使用Object接收和返回,你只需要強轉成你傳輸的類型就行,
         切記不要胡亂強轉!
         */

        //fresco加載圖片簡單用法,記得要寫下面的createImageView方法
        Uri uri = Uri.parse((String) path);
        imageView.setImageURI(uri);
    }

    //提供createImageView 方法,如果不用可以不重寫這個方法,主要是方便自定義ImageView的創建
    @Override
    public ImageView createImageView(Context context) {
        //使用fresco,需要創建它提供的ImageView,當然你也可以用自己自定義的具有圖片加載功能的ImageView
        SimpleDraweeView simpleDraweeView=new SimpleDraweeView(context);
        return simpleDraweeView;
    }
}

public class RetrofitUtils {

    private static RetrofitUtils retrofitUtils;
    private static Retrofit retrofit;


    public static RetrofitUtils getInstance(){
        if(retrofitUtils == null){
            synchronized (RetrofitUtils.class){
                if(retrofitUtils == null){
                    retrofitUtils = new RetrofitUtils();
                }
            }

        }

        return retrofitUtils;
    }

    private static synchronized Retrofit getRetrofit(String url){

        HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();
        httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
        OkHttpClient client = new OkHttpClient.Builder().addInterceptor(httpLoggingInterceptor).build();

        if(retrofit ==null){
            retrofit = new Retrofit.Builder().addCallAdapterFactory(RxJavaCallAdapterFactory.create()).addConverterFactory(GsonConverterFactory.create())
                    .client(client).baseUrl(url).build();


        }
        return retrofit;
    }

    public <T> T getApiService(String url,Class<T> cl){
        Retrofit retrofit = getRetrofit(url);
        return retrofit.create(cl);
    }




}

public class SencondActivity extends AppCompatActivity implements GetListenerShowview {

    @BindView(R.id.banner)
    Banner banner;
    @BindView(R.id.recy)
    RecyclerView recy;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sencond);
        ButterKnife.bind(this);
        recy.setLayoutManager(new LinearLayoutManager(this));
        ListenListPresenter listenListPresenter = new ListenListPresenter(this);
        listenListPresenter.relevance("vedio");

    }

    @Override
    public void getdata(lisenerbean lisenerbean) {
        List<String> imglist = new ArrayList<>();
        List<com.example.mycustomcirclearrowviewdemo.Bean.lisenerbean.DataBean> data = lisenerbean.getData();
        List<String> titlelist = new ArrayList<>();
        for (int i = 0; i < data.size(); i++) {
            String image_url = data.get(i).getImage_url();
            imglist.add(image_url);
            titlelist.add(data.get(i).getTitle());
        }
        banner.setImageLoader(new GlideImageLoader());
        banner.setImages(imglist);
        banner.setBannerTitles(titlelist);
        banner.setBannerStyle(BannerConfig.NUM_INDICATOR_TITLE);
        banner.start();

        MyAdapter myAdapter = new MyAdapter(data, SencondActivity.this);

        recy.setAdapter(myAdapter);


    }
}

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

    private List<lisenerbean.DataBean> list;
    private Context context;

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

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.item, parent, false);
        MyviewHolder myviewHolder = new MyviewHolder(view);
        return myviewHolder;
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
        MyviewHolder myholder = (MyviewHolder) holder;
        myholder.tv_item.setText(list.get(position).getTitle());
        myholder.videoplayer.setUp(list.get(position).getVedio_url()
                , JZVideoPlayerStandard.SCREEN_WINDOW_NORMAL, list.get(position).getTitle());
        myholder.videoplayer.thumbImageView.setImageURI(Uri.parse(list.get(position).getImage_url()));
        myholder.tv_download.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Subscription subscription = RxDownload.getInstance()
                        .maxThread(3)
                        .maxRetryCount(10)
                        .download(list.get(position).getVedio_url(), "xiazai.mp4", null)
                        .subscribeOn(Schedulers.io())
                        .observeOn(AndroidSchedulers.mainThread())
                        .subscribe(new Subscriber<DownloadStatus>() {
                            @Override
                            public void onCompleted() {
                                Log.i("xxx", "onNext: 下載成功");

                            }
                            @Override
                            public void onError(Throwable e) {
                                Log.i("xxx", "onNext: 下載失敗");

                            }
                            @Override
                            public void onNext(final DownloadStatus status) {
                                Log.i("xxx", "onNext: 正在下載");
                            }
                        });
            }
        });
    }

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

    private class MyviewHolder extends RecyclerView.ViewHolder {

        private final TextView tv_item;
        private final JZVideoPlayerStandard videoplayer;
        private final TextView tv_download;


        public MyviewHolder(View itemView) {
            super(itemView);
            tv_item = (TextView) itemView.findViewById(R.id.tv_item);
            videoplayer = (JZVideoPlayerStandard) itemView.findViewById(R.id.videoplayer);
            tv_download = (TextView) itemView.findViewById(R.id.tv_download);

        }
    }
}

public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        Fresco.initialize(this);
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章