2014-02-19 33 views
-1

我想將一個簡單的字符串數組傳遞給我的asynctask,但它只傳遞一個元素。我知道我的數組列表在調用asynctask之前填充了20個元素,但是當我在doinBackground中檢查大小時,它只有一個。我看了一些例子,問題和答案,與我的很相似,但它仍然只是通過這一個元素。任何幫助將不勝感激...只有一個數組元素傳遞給我的asynctask

new LoadImageTask().execute(tuxUrls); //tuxUrls has 20 elements 
... 

private class LoadImageTask extends AsyncTask<ArrayList<String>, Void, ArrayList<Bitmap>> { 

    private String name; 
    Bitmap imageBitmap; 
    ArrayList<TuxLoader> milTuxs = new ArrayList<TuxLoader>(); 


    @Override 
    //protected ArrayList<TuxLoader> doInBackground(ArrayList<String>... tuxUrls) { 

     System.out.println("TuxUrlCount = " + tuxUrls.length); 
     ArrayList<String> t = tuxUrls[0]; //thought I was passing entire array here 

     try { 
      for(int i=0; i<tuxUrls.length; i++) { 

       URL imageUrl = new URL(t[i]); 

       //do work 


      } 

       ... 

      } catch (Exception e) { 
       Log.e("error", "Image Download Failed"); 
      } 
      return milTuxs; 
     } 


    @Override 
    protected void onPostExecute(ArrayList<TuxLoader> milTuxs) { 
     super.onPostExecute(milTuxs); 
     // TODO Auto-generated method stub 

     //set the grid Adapter 
        ... 
+0

'tuxUrls'是一個數組還是'ArrayList'? –

+1

是在doInBackground參數是'ArrayList的 ... tuxUrls'這意味着'的ArrayList [] tuxUrls' – Ali

+0

@Skip,您可以通過'tuxUrls',而不是**噸循環**。我猜這是代碼中的一個錯字。 – Ali

回答

0
ArrayList<String> t = tuxUrls[0]; 

try { 
    for(int i=0; i<t.size(); i++) { 
     URL imageUrl = new URL(t.get(i)); 
     //do work 
    } 

      ... 

    } catch (Exception e) { 
     Log.e("error", "Image Download Failed"); 
    } 
return milTuxs; 

的「ArrayList中... tuxUrls「意味着您可以將任意數量的」ArrayList「傳遞給此函數,但由於您只傳遞一個,所以您必須選擇第一個元素。

+0

它仍然沒有工作。我不得不將t.length更改爲t.size,並且t [i] t.get [i]。它仍然只給了一件物品。 – Skip

+0

我解決了它。 「The」ArrayList ... tuxUrls「意味着您可以將任意數量的」ArrayList「傳遞給」爲我點擊「的函數。因此我設置了URL imageURL = new UrL(tuxUrls [0] .get(i));它的工作。我以前使用過asynctasks,但只能傳遞一個或兩個以逗號分隔的元素。我從來沒有這樣做過,因此您的發言的其餘部分非常合理。萬分感謝你,因爲我在這個論壇上掛了電話! – Skip

+0

哎呀,對不起,我在我的示例中犯了一個錯字,想想簡單數組而不是ArrayList。現在它已修復 – nikis

1

嘗試這樣做,

ArrayList<String> t = new ArrayList<String>(); 
t.addAll(tuxUrls); //this will add the entire list to your t provided tuxUrls is also a list. 

,然後調用它們都當作

try { 
     for(int i=0; i<t.length; i++) { 

      URL imageUrl = new URL(t.get(i)); 

      //do work 


    } 
+0

我得到t.addAll(tuxUrls)說差錯的(集合<?延伸字符串>)在ArrayList類型不適用的參數(ArrayList的 []) – Skip

+0

嘗試設置它如ArrayList噸= tuxUrls [ 0];正如@尼克斯所說。 –

相關問題