SHARE
TWEET

Volley to fragment

NetRally Nov 30th, 2014 483 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package YOUR_PACKAGE;
  2.  
  3. import YOUR_PACKAGE.adapter.FeedListAdapter;
  4. import YOUR_PACKAGE.Application; // AppContoller before in tutorial
  5. import YOUR_PACKAGE.data.FeedItem;
  6.  
  7. import java.io.UnsupportedEncodingException;
  8. import java.util.ArrayList;
  9. import java.util.List;
  10.  
  11. import org.json.JSONArray;
  12. import org.json.JSONException;
  13. import org.json.JSONObject;
  14.  
  15. import uk.co.senab.actionbarpulltorefresh.extras.actionbarsherlock.PullToRefreshLayout;
  16. import uk.co.senab.actionbarpulltorefresh.library.ActionBarPullToRefresh;
  17. import uk.co.senab.actionbarpulltorefresh.library.listeners.OnRefreshListener;
  18. import android.annotation.SuppressLint;
  19. import android.os.Bundle;
  20. import android.view.LayoutInflater;
  21. import android.view.View;
  22. import android.view.ViewGroup;
  23. import android.widget.ListView;
  24.  
  25. import com.actionbarsherlock.app.SherlockFragment;
  26. import com.android.volley.Cache;
  27. import com.android.volley.Cache.Entry;
  28. import com.android.volley.Request.Method;
  29. import com.android.volley.Response;
  30. import com.android.volley.VolleyError;
  31. import com.android.volley.VolleyLog;
  32. import com.android.volley.toolbox.JsonObjectRequest;
  33.  
  34. public class NewsFeed extends SherlockFragment implements OnRefreshListener {
  35.         private PullToRefreshLayout mPullToRefreshLayout;
  36.     private static final String TAG = NewsFeed.class.getSimpleName();
  37.     private ListView listView;
  38.     private FeedListAdapter listAdapter;
  39.     private List<FeedItem> feedItems;
  40.     private String URL_FEED = "http://api.androidhive.info/feed/feed.json";
  41.  
  42.     @SuppressLint("NewApi")
  43.     @Override
  44.         public View onCreateView(LayoutInflater inflater, ViewGroup container,
  45.                         Bundle savedInstanceState) {
  46.        
  47.         View View = inflater.inflate(R.layout.news_list, container, false);
  48.  
  49.         listView = (ListView) View.findViewById(R.id.list);
  50.  
  51.         feedItems = new ArrayList<FeedItem>();
  52.  
  53.         listAdapter = new FeedListAdapter(getActivity(), feedItems);
  54.         listView.setAdapter(listAdapter);
  55.  
  56.         // We first check for cached request
  57.         Cache cache = Application.getInstance().getRequestQueue().getCache();
  58.         Entry entry = cache.get(URL_FEED);
  59.         if (entry != null) {
  60.             // fetch the data from cache
  61.             try {
  62.                 String data = new String(entry.data, "UTF-8");
  63.                 try {
  64.                     parseJsonFeed(new JSONObject(data));
  65.                 } catch (JSONException e) {
  66.                     e.printStackTrace();
  67.                 }
  68.             } catch (UnsupportedEncodingException e) {
  69.                 e.printStackTrace();
  70.             }
  71.  
  72.            
  73.            
  74.         } else {
  75.             // making fresh volley request and getting json
  76.             JsonObjectRequest jsonReq = new JsonObjectRequest(Method.GET,
  77.                     URL_FEED, null, new Response.Listener<JSONObject>() {
  78.  
  79.                         @Override
  80.                         public void onResponse(JSONObject response) {
  81.                             VolleyLog.d(TAG, "Response: " + response.toString());
  82.                             if (response != null) {
  83.                                 parseJsonFeed(response);
  84.                             }
  85.                         }
  86.                     }, new Response.ErrorListener() {
  87.  
  88.                         @Override
  89.                         public void onErrorResponse(VolleyError error) {
  90.                             VolleyLog.d(TAG, "Error: " + error.getMessage());
  91.                         }
  92.                     });
  93.  
  94.             // Adding request to volley request queue
  95.             Application.getInstance().addToRequestQueue(jsonReq);
  96.         }
  97.        
  98.         ViewGroup viewGroup = (ViewGroup) View;
  99.        
  100.         mPullToRefreshLayout = new PullToRefreshLayout(viewGroup.getContext());
  101.         ActionBarPullToRefresh.from(getActivity())
  102.                 .insertLayoutInto(viewGroup)
  103.                 .allChildrenArePullable()
  104.  
  105.                 //.theseChildrenArePullable(getListView(), getListView().getEmptyView())
  106.                 .listener(this)
  107.                 .setup(mPullToRefreshLayout);
  108.  
  109.        
  110.         return View;
  111.  
  112.     }
  113.  
  114.  
  115.         /**
  116.      * Parsing json reponse and passing the data to feed view list adapter
  117.      * */
  118.     private void parseJsonFeed(JSONObject response) {
  119.         try {
  120.             JSONArray feedArray = response.getJSONArray("feed");
  121.  
  122.             for (int i = 0; i < feedArray.length(); i++) {
  123.                 JSONObject feedObj = (JSONObject) feedArray.get(i);
  124.  
  125.                 FeedItem item = new FeedItem();
  126.                 item.setId(feedObj.getInt("id"));
  127.                 item.setName(feedObj.getString("name"));
  128.  
  129.                 // Image might be null sometimes
  130.                 String image = feedObj.isNull("image") ? null : feedObj
  131.                         .getString("image");
  132.                 item.setImge(image);
  133.                 item.setStatus(feedObj.getString("status"));
  134.                 item.setProfilePic(feedObj.getString("profilePic"));
  135.                 item.setTimeStamp(feedObj.getString("timeStamp"));
  136.  
  137.                 // url might be null sometimes
  138.                 String feedUrl = feedObj.isNull("url") ? null : feedObj
  139.                         .getString("url");
  140.                 item.setUrl(feedUrl);
  141.  
  142.                 feedItems.add(item);
  143.             }
  144.  
  145.             // notify data changes to list adapater
  146.             listAdapter.notifyDataSetChanged();
  147.         } catch (JSONException e) {
  148.             e.printStackTrace();
  149.         }
  150.     }
  151.  
  152.         @Override
  153.         public void onRefreshStarted(View view) {
  154.                 mPullToRefreshLayout.setRefreshComplete();
  155.                 listAdapter = new FeedListAdapter(getActivity(), feedItems);
  156.                 listView.setAdapter(listAdapter);              
  157.                
  158.         }
  159.  
  160.  
  161.  
  162. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top