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