2016-03-06 48 views
0

我想打印ArrayList。我已經從類AsyncTask接收值arraylist,在MainActivity,我有值ArrayList,但是當我打印ArrayList時,我的應用程序不工作。請幫幫我!如何從類AsyncTask打印arraylist?

MainActivity

{ 
     executeLoadProduct(); 
     arraylistgroup = new ArrayList<String>(); 
     arraylistgroup=TaskLoadProductGroup.getvaluearraylist(); 

     String[] mStringArray = new String[arraylistgroup.size()]; 
     mStringArray = arraylistgroup.toArray(mStringArray); 

     for (int i = 0; i < mStringArray.length; i++) { 
      System.out.println("string is2" + (String) mStringArray[i]); 
     } 

executeLoadProduct

private void executeLoadProduct() { 
      // execute task load product 
      loadProductGroup = new TaskLoadProductGroup(MainActivity.this); 
      loadProductGroup.execute(); 
     } 

的AsyncTask

public class TaskLoadProductGroup extends AsyncTask<String, Void, ArrayList<String>> { 
    private ActionBarActivity actionBarActivity; 
    private Context context; 
    private static ArrayList<String> arrayListgroup; 

    public TaskLoadProductGroup(ActionBarActivity actionBarActivity) { 
     this.actionBarActivity = actionBarActivity; 
     this.context = actionBarActivity.getApplicationContext(); 
    } 

    @Override 
    protected void onPreExecute() { 
     ///show progress loading 

     super.onPreExecute(); 
    } 

    @Override 
    protected ArrayList<String> doInBackground(String... url) { 
     ArrayList<String> listProductgroup = null; 
     try { 
      Server server = new Server(); 
      ResListProduct resListProduct = server.getListProducts(context); 

      //init list item for listview home product 
      listProductgroup = initItemProduct(resListProduct); 

     } catch (Exception e) { 
     } 
     return listProductgroup; 
    } 

    public static ArrayList<String> initItemProduct(ResListProduct rsProduct) { 
     List<GroupProduct> groups = rsProduct.getGroups(); 
     arrayListgroup = new ArrayList<String>(); 

     for (GroupProduct group : groups) { 
      // add header group 
      String s = group.getName(); 
      arrayListgroup.add(s);   
     } 
     getvaluearraylist(); 
     // getVarialty(); 
     return arrayListgroup; 
    } 

    public static ArrayList<String> getvaluearraylist() 
    { 
     return arrayListgroup; 
    } 

    @Override 
    protected void onPostExecute(ArrayList<String> listProductgroup) { 
     super.onPostExecute(listProductgroup);  
    } 

} 
+0

這是你在'mainactivity.java'中嘗試打印你的數組嗎? –

+0

我想打印類TaskLoadProductGroup的arrayListgroup。 –

+0

然後當您嘗試從doInBackground打印時發生了什麼?您是否嘗試使用Log類進行打印或在設備的屏幕上進行打印? –

回答

0

我做不到確定你爲什麼要這麼複雜的代碼來打印ArrayList。你可以只打印內部onPostExecute方法就是這樣,

@Override 
protected void onPostExecute(ArrayList<String> listProductgroup) { 
super.onPostExecute(listProductgroup); 

    for (String value : listProductgroup){ 
     Log.d("myTag", value); 
     } 
} 

OR

使用loadProductGroup.execute().get()方法,但記住這將會凍結您的UI。

+0

,因爲在Mainactivity中,我使用值listProductgroup進行某些功能。在拳頭,我想打印它Mainactivity。請幫幫我? –

+0

你可以在你的字段中分配那個listProductgroup,像'arraylistgroup = listProductgroup'裏面的onPostExecute,然後打印那個變量.. –

+0

@tonyHoang你也可以使用[get](http://developer.android.com/reference/android/os /AsyncTask.html#get())方法 –