public class MainActivity extends AppCompatActivity { private RecyclerView mRv; private MyAdapter myAdapter; private UserDao userDao; private Handler handler = new Handler(); private Subscription subscription; private ProgressBar mPb; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); show(); DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(MyApp.getContext(), "mTable", null); DaoMaster daoMaster = new DaoMaster(devOpenHelper.getWritableDatabase()); DaoSession daoSession = daoMaster.newSession(); userDao = daoSession.getUserDao(); } private void show() { Retrofit retrofit = new Retrofit.Builder().baseUrl(Api.KUAIXUN) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); ApiService apiService = retrofit.create(ApiService.class); Observable<List<NewsBean>> noParams = apiService.getNoParams(); noParams.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Subscriber<List<NewsBean>>() { private List<NewsBean.DataBean> data; @Override public void onCompleted() { } @Override public void onError(Throwable e) { Log.i("xxx",e.getMessage()+"sdsdd"); } @Override public void onNext(final List<NewsBean> newsBeen) { for (int i=0;i<newsBeen.size();i++){ data = newsBeen.get(i).getData(); String img = data.get(i).getImg(); User u = new User(null, img); userDao.insert(u); Toast.makeText(MainActivity.this,"添加成功",Toast.LENGTH_SHORT).show(); } List<User> users = userDao.loadAll(); for (int i=0;i<users.size();i++){ Log.i("xxx",users.toString()); } myAdapter = new MyAdapter(MainActivity.this,data); mRv.setAdapter(myAdapter); myAdapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() { private String url; @Override public void OnItemClick(int position) { } @Override public void onItemLongClick(int position) { mPb.setVisibility(View.VISIBLE); url = data.get(position).getImg(); String title = data.get(position).getTitle(); subscription = RxDownload.getInstance() .maxThread(2) //设置最大线程 .maxRetryCount(10) //设置下载失败重试次数 //.retrofit(myRetrofit)//若需要自己的retrofit客户端,可在这里指定 //.defaultSavePath(defaultSavePath)//设置默认的下载路径 .download(url, title+".jpg", null) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Subscriber<DownloadStatus>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(final DownloadStatus status) { handler.post(new Runnable() { @Override public void run() { int len = (int) status.getDownloadSize(); mPb.setProgress(mPb.getProgress() + len); int max = mPb.getMax(); int progress = mPb.getProgress(); if(progress == max){ mPb.setVisibility(View.GONE); Toast.makeText(MainActivity.this,"下载成功",Toast.LENGTH_SHORT).show(); } /* int result = (progress * 100) / max; mTv.setText("下载"+result+"%");*/ /* try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); }*/ } }); } }); } }); //取消订阅, 即可暂停下载, 若服务端不支持断点续传,下一次下载会重新下载,反之会继续下载 /*if (subscription != null && !subscription.isUnsubscribed()) { subscription.unsubscribe(); }*/ /*myAdapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() { @Override public void OnItemClick(int position) { User u = new User(null, position+""); userDao.insert(u); Toast.makeText(MainActivity.this,"添加成功",Toast.LENGTH_SHORT).show(); } @Override public void onItemLongClick(int position) { User findUser = userDao.queryBuilder().where(UserDao.Properties.Name.eq(position+"")).build().unique(); if(findUser!=null){ userDao.deleteByKey(findUser.getId()); Toast.makeText(MainActivity.this,"删除成功",Toast.LENGTH_SHORT).show(); } } });*/ } }); } private void initView() { mPb = (ProgressBar) findViewById(R.id.pb); mRv = (RecyclerView) findViewById(R.id.rv); mRv.setLayoutManager(new LinearLayoutManager(this)); mRv.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL)); }