billt_chen 2015-04-18 11:20 采纳率: 0%
浏览 2678

android 多个Handler问题

新手入门求各位大牛指教。
在做一个应用时,要汇总多个数据库里的数据,因此用了多个Handler请求数据,获取到所有数据后再汇总。现在问题是怎样才能知道所有数据都请求到了?代码如下 :

for (BranchVO m : response.getData()) {
                if(!m.isIsGroup())
                ResponseBusingessEarningData(sDate,m.getBranchID(),URL);
            }

    /*
     * 请求营业统计数据
     */
    private void ResponseBusingessEarningData(String Date,String BranchID,String URL){
        //封装传递参数的集合  
        String str="[\u4e00-\u9fa5]";
        String localDate = Date.replaceAll(str, "-").substring(0,10);
        List<NameValuePair> parameters = new ArrayList<NameValuePair>();  
        parameters.add(new BasicNameValuePair("Date",localDate));  
        parameters.add(new BasicNameValuePair("BranchID",BranchID));
        HttpConnectionUtil.getResponseByPost(URL, "BusinessEarning",parameters, beHandler,(BaseActivity)myContext);
    }

    ResponseHandler beHandler = new ResponseHandler(){

        @Override
        protected void handleResponse(Message msg) {
            String responseText = (String) msg.getData().get("responseText");
            Gson gson = new Gson();
            ApiResultModel<BusinessEarningVO> response = gson.fromJson(responseText,new TypeToken<ApiResultModel<BusinessEarningVO>>(){}.getType());
            if(response.getData() != null && response.getData().size() > 0){
                for (BusinessEarningVO vo : response.getData()) {
                    beList.add(vo); 
                } 
                beAdapter.notifyDataSetChanged();
            }

            //dismissDialog();
        }

    };
  • 写回答

2条回答 默认 最新

  • danielinbiti 2015-04-18 12:13
    关注

    CountDownLatch,类似下面这样

    CountDownLatch latch=new CountDownLatch( response.getData()的数量)
     for (BranchVO m : response.getData()) {
                    if(!m.isIsGroup()){
                      ResponseBusingessEarningData(sDate,m.getBranchID(),URL);
                                        }else{
                                           latch.countDown();//这里,不用获取数据down一次
                                        }
                }
    
        /*
         * 请求营业统计数据
         */
        private void ResponseBusingessEarningData(String Date,String BranchID,String URL){
            //封装传递参数的集合  
            String str="[\u4e00-\u9fa5]";
            String localDate = Date.replaceAll(str, "-").substring(0,10);
            List<NameValuePair> parameters = new ArrayList<NameValuePair>();  
            parameters.add(new BasicNameValuePair("Date",localDate));  
            parameters.add(new BasicNameValuePair("BranchID",BranchID));
            HttpConnectionUtil.getResponseByPost(URL, "BusinessEarning",parameters, beHandler,(BaseActivity)myContext);
        }
    
        ResponseHandler beHandler = new ResponseHandler(){
    
            @Override
            protected void handleResponse(Message msg) {
                String responseText = (String) msg.getData().get("responseText");
                Gson gson = new Gson();
                ApiResultModel<BusinessEarningVO> response = gson.fromJson(responseText,new TypeToken<ApiResultModel<BusinessEarningVO>>(){}.getType());
                if(response.getData() != null && response.getData().size() > 0){
                    for (BusinessEarningVO vo : response.getData()) {
                        beList.add(vo); 
                    } 
                    beAdapter.notifyDataSetChanged();
                }
                latch.countDown();//这里,完成一个down一次
                //dismissDialog();
            }
    
        };
    
    评论

报告相同问题?

悬赏问题

  • ¥15 逐月累计,月份不连续,补齐月份
  • ¥15 应用简单的Python代码完成一个学生成绩管理系统
  • ¥15 用matlab求微分方程初值问题
  • ¥15 vscode下编写第三方库opencv与pcl代码时没有代码提示
  • ¥15 能够跑通不报错,如何解决?(标签-matlab)
  • ¥15 MOS在RDS较大,频率高时开关波形异常
  • ¥15 SCENIC分析报错求解答
  • ¥15 ceph初始化mon不成功 下图不报错 这个是什么元
  • ¥15 数学建模数学建模少ai
  • ¥35 这个等效电路图是什么意思?(答疑)(有没有不是chat的,我就是在chat搜不到才来问的,chat还开了VIP)(可以追加酬金)