2017-07-14 48 views
0

我是新的rxAndroid,我只是简单地从rxAndroid替换asynTask。我只是想在后台创建一个使用db查询的列表从RxAndroid替换异步任务

new AsyncTask<Void, Void, Void>() { 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      startSppiner(); 
     } 

     @Override 
     protected Void doInBackground(Void... params) { 
     List<masterDataTable> list = ServatiumApplication.daoSession.getMasterDataTableDao().queryBuilder().where(masterDataTableDao.Properties.MasterType.eq(ParserString.MD_SERVICE_LEVEL), masterDataTableDao.Properties.DeleteFlag.eq(SHOW_FLAG)).orderAsc(masterDataTableDao.Properties.Description).list(); 
     if (list.size() > 0) { 
     PopUpValues values1 = new PopUpValues(); 
     values1.setValue(ParserString.SELECT_VALUE); 
     values1.setName(ParserString.SELECT); 
     serviceLevelList.add(values1); 

     for (masterDataTable item : list) { 
      PopUpValues values = new PopUpValues(); 
      values.setValue(item.getLookupCode()); 
      values.setName(item.getDescription()); 
      serviceLevelList.add(values); 
     } 

    } 
      return null; 
     } 

     @Override 
     protected void onPostExecute(Void aVoid) { 
      stopSppiner(); 

     } 
    }.execute(); 

感谢您的帮助!

+0

https://stackoverflow.com/questions/31592399/convert-asynctask-to-rxandroid?rq=1 – codeWorm

+0

我只是想抬高名单没有什么可以分享一些代码涉及到它 –

回答

0

这会做。

public void query(){ 
    startSppiner(); 
    Observable.fromCallable(new Func0<List<PopUpValues>>() { 
     @Override 
     public List<PopUpValues> call() { 
      List<masterDataTable> list = ServatiumApplication.daoSession.getMasterDataTableDao().queryBuilder().where(masterDataTableDao.Properties.MasterType.eq(ParserString.MD_SERVICE_LEVEL), masterDataTableDao.Properties.DeleteFlag.eq(SHOW_FLAG)).orderAsc(masterDataTableDao.Properties.Description).list(); 
      List<PopUpValues> serviceLevelList = new ArrayList<PopUpValues>(); 
      if (list.size() > 0) { 
       PopUpValues values1 = new PopUpValues(); 
       values1.setValue(ParserString.SELECT_VALUE); 
       values1.setName(ParserString.SELECT); 
       serviceLevelList.add(values1); 

       for (masterDataTable item : list) { 
        PopUpValues values = new PopUpValues(); 
        values.setValue(item.getLookupCode()); 
        values.setName(item.getDescription()); 
        serviceLevelList.add(values); 
       } 

      } 
      return serviceLevelList; 
     } 
    }) 
    .subscribeOn(Schedulers.io()) 
    .observeOn(AndroidSchedulers.mainThread()) 
    .subscribe(new Subscriber<List<PopUpValues>>() { 
     @Override 
     public void onCompleted() { 
      stopSppiner(); 
     } 

     @Override 
     public void onError(Throwable e) { 

     } 

     @Override 
     public void onNext(List<PopUpValues> popUpValues) { 
      // Here you get the serviceLevelList data 
     } 
    }); 
} 
+0

谢谢回答我们可以使用相同的Observable从DB获取多个列表。如果是,那么如何。 –

+0

取决于,多个列表的模型是什么,如果相同,那么是的,所有可以合并为一个。 – Ritesh

+0

我们如何返回多个列表 –