如何为我的数组列表的每个元素运行相同的asyn任务?

时间:2018-06-28 10:56:06

标签: android spring arraylist resttemplate asyncresttemplate

我有一个包含元素的列表,我想使用AsynkTask中的RestTemplate将列表的每个元素分别发送到本地数据库服务器。如果我指定了要发送的元素,则可以轻松发送并使用我的AsyncTask,但我想循环所有列表并将所有元素一一发送到我的数据库。.我试图在AsyncTask内进行“ for循环”,但那行不通,我也尝试在“ for loop”,再也没有任何反应。 这是我使用RestTemplate的Asynctask

    private class SendLigneVente extends AsyncTask<LigneVente, Void, LigneVente>{

    protected void onPreExecute() {
        super.onPreExecute();
    }
    @Override
    protected LigneVente doInBackground(LigneVente... params) {
        try {
            HttpHeaders requestHeaders = new HttpHeaders();
            //solution avec Token
            requestHeaders.add("Content-Type","application/json");
            requestHeaders.add("Accept", "application/json");
            requestHeaders.add("Authorization","Bearer "+AuthToken);
            final String url = StaticUrl+"/api/ligne-ventes";
                RestTemplate restTemplate=new RestTemplate();
                restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
                restTemplate.getMessageConverters().add(new StringHttpMessageConverter());
                LigneVente lv=new LigneVente();
                HttpEntity entity = new HttpEntity(lv, requestHeaders);
                ResponseEntity<LigneVente> response = restTemplate.exchange(url, HttpMethod.POST,entity,LigneVente.class);
                return response.getBody();
        }catch (Exception e) {
            Log.e("ScanActivity", e.getMessage(),e);

        }
        return null;
    }
    protected void onPostExecute(LigneVente result) {
    }
}

这是当我在for循环中调用AsyncTask时:

public void onClick(View v) {
            new CreateVente().execute();
            for(int j=0;j<ligneVentes.size();j++){
                LigneVente lv=ligneVentes.get(j);
            new SendLigneVente().execute(lv);}}

1 个答案:

答案 0 :(得分:0)

没有任何事情发生,因为您没有在onPostExecute方法中显示任何反馈

protected void onPostExecute(LigneVente result) {
    Toast.maketext(getContext(),"Uploaded 
    ",Toast.DURATION_SHORT).show();
}

编辑:您没有使用传递给AsyncTask的参数

并在doInBackground方法中创建一个新对象

LigneVente lv=params[0];