読者です 読者をやめる 読者になる 読者になる

AWS Mobile Application Development

AWSのサービスをモバイルから使うにあたって調べた情報などまとめて行きます。

AsyncTaskで取得してきたデータをアクティビティに引き渡す方法

stackoverlowで良いサンプルがあったのですメモ。Activity外の外出個別クラスから、Activityクラスへデータを返す方法を探してたら、データを、返すんではなく外出しクラスへActivityを受け渡すやり方。

つまり、件名とはやってることは違いますが最終的やりたいことは同じ。

Asynctask側のコンストラクタにActivity自体を渡してます。それでAsynctask側のメソッドでActivity側のメンバlistをAsynctask側から更新する。

一般的なgetやAWS S3とかDynamodbのデータをAsynctaskでとってきたあと、Activityに結果を、反映する用途で使えますね。

・YourActivity.java

public class YourActivity extends Activity {
    private List<String> list = new ArrayList<String>();

    public void onCreate(Bundle state) {
        //...
    }

    public void setList(List<String> list) {
        this.list = list;
    }

    private void fireYourAsyncTask() {
        new LoadStringsAsync(this).execute();
    }

}    

・LoadStringsAsync.java

public class LoadStringsAsync extends AsyncTask<Void, Void, List<String>> {

    List<String> str;
    private YourAcitivity activity;

    public LoadStringsAsync(YourAcitivity activity) {
        this.activity = activity;
    }

    @Override
    protected List<String> doInBackground(Void... arg0) {
    }

    @Override
    protected void onPostExecute(List<String> str) {
        super.onPostExecute(events);
        activity.setList(str);
    }
}

android - AsyncTask return List to Activity - Stack Overflow