2017-05-30 9 views
0

私はフラグメントx.javaとAsyncTaskクラスBackgroundDataExtractor(別々の2つのJavaファイルとして)を持っています。可変itemsクラスxで定義されたグローバルArrayList<CustomClass>あるAndroidのAsynTaskクラスから何かを返すにはどうすればよいですか(正確にはArrayList?)

BackgroundDataExtractor backgroundWorker = new BackgroundDataExtractor(getActivity(),items); 
backgroundWorker.execute(name); 

:断片クラスは、コードのこの部分を含んでいます。

BackgroundDataExtractorクラスで、要素itemsxにあります)に要素を追加/更新します。

@Override 
    protected void onPostExecute(final String result) { 
     if(!result.contains("Could not fetch items")) { 
      dialog.dismiss(); 
      String[] resultSplit = result.split(" "); 
      for(int i=1; i<resultSplit.length; i++) { 
       String[] tempStringArray = resultSplit[i].split(";"); 
       items.add(new itemClass(tempStringArray[1],tempStringArray[2],tempStringArray[6],tempStringArray[3],tempStringArray[4],Double.parseDouble(tempStringArray[7]))); 
      } 
     } 
     else { 
      xxxxxx 
     } 
    } 

しかし、これは、フラグメントxitems変数を更新しません:

私が現在持っていることです。

これを行う方法に関するヒントを教えてください。

答えて

1

非同期プロセスから何かを返すことはできませんが、onPostExecuteから関数を呼び出して、必要なデータを送信することができます。このように

public class MyClass extends Activity { 

    private class myTask extends AsyncTask<Void, Void, Void> { 

     //initiate vars 
     public myTask() { 
      super(); 
      //my params here 
     } 

     protected Void doInBackground(Void... params) { 
      //do stuff 
      return null; 
     } 

     @Override 
     protected void onPostExecute(Void result) { 
      //do stuff 
      myMethod(myValue); 
     } 
    } 

    private void myMethod(Value myValue) { 
     //handle value 
    } 
} 
関連する問題