2016-03-06 46 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())方法 –