将arraylist从asynctask传递给调用它的方法android

时间:2013-11-28 13:49:43

标签: android arraylist android-asynctask

我有一个场景,我在按钮的onclicklistener中调用asynctask。在asynctask的post execute方法中,我在arraylist中添加了值,我想返回调用asynctask的方法

这是我的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 arraylists传递给调用方法 请帮助我实现这一目标。

2 个答案:

答案 0 :(得分:1)

您可以使用ArrayLists的ArrayList:

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

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

return tops;

答案 1 :(得分:0)

嘿,只需在btn中调用AsyncTask即可 并在后执行方法 调用另一个方法,该方法将使用在执行后创建的数组。

@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";
                       }
                    }