2013-11-28 60 views
0

我有一個場景,我在onclicklistener的按鈕中調用asynctask。在後期執行的AsyncTask我加入的ArrayList的,我想返回的方法值的方法調用的AsyncTask將arraylist從asynctask傳遞給調用它的方法android

這是我的AsyncTask

public class FetchtopTask extends AsyncTask<String, String, String>{ 

      @Override 
      protected String doInBackground(String... params) { 
       // TODO Auto-generated method stub 

       try { 


        String getitemcode=params[0]; 
         // Building Parameters 
         ArrayList<NameValuePair> params1 = new ArrayList<NameValuePair>(); 
         params1.add(new BasicNameValuePair("ItemCode",getitemcode)); 
         Log.d("request!", "starting"); 
         response = CustomHttpClient.executeHttpPost("http://10.0.2.2/top.php",params1); 


         String retstring=response.toString(); 
         Log.d(retstring,"stringggggg"); 
         return retstring; 
        } 
       catch(Exception io){ 
       msg = "No Network Connection"; 
       } 
       return null; 
      } 


      @Override 
       protected void onPostExecute(String sJson) { 
          try { 
            JSONArray aJson = new JSONArray(sJson); 


            for(int i=0;i<aJson.length();i++) 
            { 
             JSONObject jsonO = aJson.getJSONObject(i); 
             top1.add(jsonO.getString("MName")); 
             top2.add(jsonO.getString("Amount")); 
             top3.add(jsonO.getString("TaxStruct")); 

           } 

          }catch(JSONException e){ 
           msg = "Invalid response"; 
          } 
         } 

    } 

我想通過TOP1,TOP2,TOP3的ArrayList調用方法 請幫我實現這一點。

+0

你想在哪裏返回?在全球範圍內聲明你的數組列表有什麼問題可以正確解釋它? –

+0

我想將arraylist返回到調用asynctask的方法,它是onclicklistener按鈕。 –

回答

1

您可以使用的ArrayLists的ArrayList:

ArrayList<ArrayList<String>> tops= new ArrayList<ArrayList<String>>(); 

tops.add(top1); 
tops.add(top2); 
tops.add(top3); 

return tops; 
+0

我應該如何從postexecute方法返回arraylist? –

+1

返回意味着不是實際的返回,因爲onPostExecute不返回任何你可以使用處理程序或最簡單的方法你可以調用另一個函數與此param.Do研究更多關於AsyncTask。 – Subbu

0

哎只需撥打的AsyncTask在BTN點擊 ,並在後期執行方法 調用,它會使用數組,它是另一種方法,在後期執行中創建。

@Override 
      protected void onPostExecute(String sJson) { 
         try { 
           JSONArray aJson = new JSONArray(sJson); 
           for(int i=0;i<aJson.length();i++) 
           { 
            JSONObject jsonO = aJson.getJSONObject(i); 
            top1.add(jsonO.getString("MName")); 
            top2.add(jsonO.getString("Amount")); 
            top3.add(jsonO.getString("TaxStruct")); 

            anotherMethod(top); 
          } 
         }catch(JSONException e){ 
          msg = "Invalid response"; 
         } 
        } 
+0

我想在其中調用的AsyncTask –

+0

你不能這樣做,因爲在BTN點擊聽者的ArrayList將null,因爲的AsyncTask就像線程buttonclicklistener使用此ArrayList。所以你想使用arraylist,那麼你應該使用第二種方法在後執行數組列表數據執行操作。 – khurram

+0

第二種方法在後期執行手段? –