Advertisement
erwinprasetyo97

MyAsynTaskLoader.java

Aug 19th, 2018
360
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.42 KB | None | 0 0
  1. package com.erprasetyo.myasynctaskloader;
  2.  
  3. import android.content.Context;
  4. import android.support.annotation.NonNull;
  5. import android.support.annotation.Nullable;
  6. import android.support.v4.content.AsyncTaskLoader;
  7.  
  8. import com.loopj.android.http.AsyncHttpResponseHandler;
  9. import com.loopj.android.http.SyncHttpClient;
  10.  
  11. import org.json.JSONArray;
  12. import org.json.JSONException;
  13. import org.json.JSONObject;
  14.  
  15. import java.util.ArrayList;
  16.  
  17. import cz.msebera.android.httpclient.Header;
  18.  
  19. public class MyAsyncTaskLoader extends AsyncTaskLoader<ArrayList<WeatherItems>> {
  20.  
  21.     private ArrayList<WeatherItems> mData;
  22.     private boolean mHasResult = false;
  23.  
  24.     private String mKumpulanKota;
  25.  
  26.     public MyAsyncTaskLoader(final Context context, String kumpulankota) {
  27.         super(context);
  28.  
  29.         onContentChanged();
  30.         this.mKumpulanKota = kumpulankota;
  31.     }
  32.  
  33.     @Override
  34.     protected void onStartLoading() {
  35.         if (takeContentChanged()) {
  36.             forceLoad();
  37.         } else if (mHasResult) {
  38.             deliverResult(mData);
  39.         }
  40.     }
  41.  
  42.     @Override
  43.     public void deliverResult(final ArrayList<WeatherItems> data) {
  44.         mData = data;
  45.         mHasResult = true;
  46.         super.deliverResult(data);
  47.  
  48.     }
  49.  
  50.     @Override
  51.     protected void onReset() {
  52.         super.onReset();
  53.         onStopLoading();
  54.         if (mHasResult) {
  55.             onReleaseResources(mData);
  56.             mData = null;
  57.             mHasResult = false;
  58.         }
  59.     }
  60.  
  61.     private static final String API_KEY = "196e013790b5f77bfe4ae1955648b547";
  62.  
  63.     // Format search kota url JAKARTA = 1642911 ,BANDUNG = 1650357, SEMARANG = 1627896
  64.     // http://api.openweathermap.org/data/2.5/group?id=1642911,1650357,1627896&units=metric&appid=API_KEY
  65.  
  66.     @Override
  67.     public ArrayList<WeatherItems> loadInBackground() {
  68.         SyncHttpClient client = new SyncHttpClient();
  69.  
  70.         final ArrayList<WeatherItems> weatherItemses = new ArrayList<>();
  71.         String  url = "http://api.openweathermap.org/data/2.5/group?id=" +
  72.                 mKumpulanKota+ "&units=metric&appid=" + API_KEY;
  73.  
  74.         client.get(url, new AsyncHttpResponseHandler() {
  75.             @Override
  76.             public void onStart() {
  77.                 super.onStart();
  78.                 setUseSynchronousMode(true);
  79.  
  80.             }
  81.  
  82.             @Override
  83.             public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
  84.                 try{
  85.  
  86.                     String result = new String(responseBody);
  87.                     JSONObject responseObject = new JSONObject(result);
  88.                     JSONArray list = responseObject.getJSONArray("list");
  89.  
  90.                     for (int i=0; i<list.length(); i++) {
  91.                         JSONObject weather = list.getJSONObject(i);
  92.                         WeatherItems weatherItems = new WeatherItems(weather);
  93.                         weatherItemses.add(weatherItems);
  94.                     }
  95.                 } catch (JSONException e) {
  96.                     e.printStackTrace();
  97.                 }
  98.             }
  99.  
  100.             @Override
  101.             public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
  102.                 //Jika response gagal maka, do nothing
  103.             }
  104.         });
  105.         return weatherItemses;
  106.     }
  107.  
  108.     protected void onReleaseResources(ArrayList<WeatherItems> data) {
  109.         //nothing to do
  110.  
  111.     }
  112.  
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement