ppamorim

Untitled

May 10th, 2014
343
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 11.41 KB | None | 0 0
  1. package com.fatos.fatos_desconhecidos.app.fragment;
  2.  
  3. import android.content.Context;
  4. import android.os.AsyncTask;
  5. import android.os.Bundle;
  6. import android.os.Handler;
  7. import android.support.v4.app.Fragment;
  8. import android.support.v4.app.FragmentTransaction;
  9. import android.view.LayoutInflater;
  10. import android.view.View;
  11. import android.view.ViewGroup;
  12. import android.widget.AbsListView;
  13. import android.widget.AbsListView.OnScrollListener;
  14. import android.widget.AdapterView;
  15. import android.widget.Button;
  16. import android.widget.ListView;
  17. import android.widget.RelativeLayout;
  18. import android.widget.TextView;
  19. import android.widget.Toast;
  20.  
  21. import com.fatos.fatos_desconhecidos.app.R;
  22. import com.fatos.fatos_desconhecidos.app.adapter.FeedAdapter;
  23. import com.fatos.fatos_desconhecidos.app.core.fragment.ErrorFragment;
  24. import com.fatos.fatos_desconhecidos.app.core.model.impl.Feed;
  25. import com.fatos.fatos_desconhecidos.app.utils.FirstItemScrollListener.OnFirstItemVisible;
  26. import com.parse.FindCallback;
  27. import com.parse.ParseException;
  28. import com.parse.ParseObject;
  29. import com.parse.ParseQuery;
  30.  
  31. import uk.co.senab.actionbarpulltorefresh.extras.actionbarcompat.PullToRefreshLayout;
  32. import uk.co.senab.actionbarpulltorefresh.library.ActionBarPullToRefresh;
  33. import uk.co.senab.actionbarpulltorefresh.library.Options;
  34. import uk.co.senab.actionbarpulltorefresh.library.listeners.OnRefreshListener;
  35.  
  36. import java.util.ArrayList;
  37. import java.util.List;
  38.  
  39. public class FeedFragment extends Fragment {
  40.  
  41.     private int limit = 0;
  42.     private boolean hasFilter = false;
  43.     private String mFilter;
  44.     private ListView mListView;
  45.     private FeedAdapter adapter;
  46.     private RelativeLayout mFeedLoader;
  47.     private TextView mTooLongMessage;
  48.     private Button mTryAgain;
  49.     private List<Feed> items = new ArrayList<Feed>();
  50.     private PullToRefreshLayout mPullToRefreshLayout;
  51.     private Context mContext;
  52.     protected OnFirstItemVisible mScrollListener;
  53.  
  54.     private View mFooterView;
  55.     private boolean mIsLoading = false;
  56.  
  57.     @Override
  58.     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
  59.  
  60.         View view = inflater.inflate(R.layout.fragment_feed, container, false);
  61.         mListView = (ListView) view.findViewById(R.id.listView_feed);
  62.         mPullToRefreshLayout = (PullToRefreshLayout) view.findViewById(R.id.ptr_layout);
  63.         mFeedLoader = (RelativeLayout) view.findViewById(R.id.feed_loader);
  64.         mTooLongMessage = (TextView) view.findViewById(R.id.loading_text);
  65.         mTryAgain = (Button) view.findViewById(R.id.try_again);
  66.  
  67.         return view;
  68.     }
  69.  
  70.     @Override
  71.     public void onViewCreated(View view, Bundle savedInstanceState) {
  72.         super.onViewCreated(view, savedInstanceState);
  73.         final String[] mArray = getResources().getStringArray(R.array.navigation_drawer_items);
  74.         final Bundle extras = getArguments();
  75.  
  76.         mContext = getActivity();
  77.  
  78.         verifyExtras(extras, mArray);
  79.  
  80.         mTryAgain.setOnClickListener(new View.OnClickListener() {
  81.             @Override
  82.             public void onClick(View view) {
  83.                 getFeed();
  84.             }
  85.         });
  86.  
  87.         if(mFeedLoader.getVisibility() == View.VISIBLE) {
  88.             showTooLongMessage();
  89.         }
  90.  
  91.         ActionBarPullToRefresh.from(getActivity())
  92.                 .allChildrenArePullable()
  93.                 .options(Options.create().scrollDistance(.20f).build())
  94.                 .listener(new OnRefreshListener() {
  95.                     @Override
  96.                     public void onRefreshStarted(View view) {
  97.                         verifyExtras(extras, mArray);
  98.                         mListView.addFooterView(mFooterView);
  99.                         limit = 0;
  100.                     }
  101.                 }).setup(mPullToRefreshLayout);
  102.  
  103.     }
  104.  
  105.     private void verifyExtras(Bundle extras, String[] mArray) {
  106.         if(extras.getString("extra") != null) {
  107.             mFilter = extras.getString("extra");
  108.         }
  109.         if (mFilter != null) {
  110.             if (mFilter.equals(mArray[0])) {
  111.                 mFilter = null;
  112.                 //getFeed();
  113.             } else {
  114.                 mFilter = extras.getString("extra");
  115.                 //getFeedFilter(mFilter);
  116.             }
  117.         } else {
  118.             //getFeed();
  119.         }
  120.     }
  121.  
  122.     public class LoadMore extends AsyncTask<Void, Void, Void> {
  123.         @Override
  124.         protected Void doInBackground(Void... voids) {
  125.             try {
  126.                 if (isCancelled()) {
  127.                     return null;
  128.                 }
  129.  
  130.                 try {
  131.                     Thread.sleep(1000);
  132.                 } catch (InterruptedException e) {
  133.                 }
  134.  
  135.                 ParseQuery<ParseObject> query = ParseQuery.getQuery("FeedPost");
  136.                 query.orderByDescending("createdAt");
  137.                 if(mFilter != null) {
  138.                     query.whereContains("Type", mFilter);
  139.                 }
  140.                 query.setLimit(5);
  141.                 query.setSkip(limit = limit + 5);
  142.                 query.findInBackground(new FindCallback<ParseObject>() {
  143.                     @Override
  144.                     public void done(List<ParseObject> responseList, ParseException e) {
  145.                         if (e == null) {
  146.                             for(int i = 0; i < responseList.size(); i++) {
  147.                                 items.add(new Feed(responseList.get(i).getObjectId(),
  148.                                         responseList.get(i).getString("Title"),
  149.                                         responseList.get(i).getString("Description"),
  150.                                         responseList.get(i).getString("CompleteText"),
  151.                                         responseList.get(i).getString("imageURL"),
  152.                                         responseList.get(i).getString("Link_on_Site")));
  153.                             }
  154.                             mIsLoading = false;
  155.                         }
  156.                     }
  157.                 });
  158.             } catch (Exception e) {
  159.                 e.printStackTrace();
  160.             }
  161.             return null;
  162.         }
  163.  
  164.         @Override
  165.         protected void onPostExecute(Void result) {
  166.             super.onPostExecute(result);
  167.             try {
  168.                 mListView.removeFooterView(mFooterView);
  169.                 adapter.notifyDataSetChanged();
  170.             } catch (Exception e) {
  171.                 e.printStackTrace();
  172.             }
  173.         }
  174.     }
  175.  
  176.     public void getFeed() {
  177.         try {
  178.             ParseQuery<ParseObject> query = ParseQuery.getQuery("FeedPost");
  179.             query.orderByDescending("createdAt");
  180.             query.setLimit(5);
  181.             query.findInBackground(new FindCallback<ParseObject>() {
  182.                 public void done(List<ParseObject> responseList, ParseException e) {
  183.                     if (e == null) {
  184.  
  185.                         hideLoad();
  186.                         items = new ArrayList<Feed>();
  187.                         for(int i = 0; i < responseList.size(); i++) {
  188.                             items.add(new Feed(responseList.get(i).getObjectId(),
  189.                                     responseList.get(i).getString("Title"),
  190.                                     responseList.get(i).getString("Description"),
  191.                                     responseList.get(i).getString("CompleteText"),
  192.                                     responseList.get(i).getString("imageURL"),
  193.                                     responseList.get(i).getString("Link_on_Site")));
  194.                         }
  195.  
  196.  
  197.                         adapter = new FeedAdapter(getActivity(), items);
  198.                         adapter.notifyDataSetChanged();
  199.                         mListView.setAdapter(adapter);
  200.                         endLoad();
  201.  
  202.                     } else {
  203.                         //TODO: Show Error
  204.                     }
  205.                 }
  206.             });
  207.         } catch (Exception e) {
  208.             //TODO: Show hard Error
  209.         }
  210.  
  211.     }
  212.  
  213.     private void showTooLongMessage() {
  214.  
  215.         new Handler().postDelayed(new Runnable() {
  216.             @Override
  217.             public void run() {
  218.                 try {
  219.                     mTooLongMessage.setText(getString(R.string.too_slow));
  220.                     mTryAgain.setVisibility(View.VISIBLE);
  221.                 } catch (Exception e) {
  222.                     showTooLongMessage();
  223.                 }
  224.             }
  225.         }, 5000);
  226.  
  227.     }
  228.  
  229.     private void hideLoad() {
  230.         mFeedLoader.setVisibility(View.GONE);
  231.         mPullToRefreshLayout.setVisibility(View.VISIBLE);
  232.     }
  233.  
  234.     protected void endLoad() {
  235.         if (isAdded() && (!isRemoving())) {
  236.             mPullToRefreshLayout.setRefreshComplete();
  237.         }
  238.     }
  239.  
  240.     private void getFeedFilter(String filter) {
  241.  
  242.         ParseQuery<ParseObject> query = ParseQuery.getQuery("FeedPost");
  243.         query.whereContains("Type", filter);
  244.         query.setLimit(5);
  245.         query.findInBackground(new FindCallback<ParseObject>() {
  246.             public void done(List<ParseObject> responseList, ParseException e) {
  247.                 if (e == null) {
  248.  
  249.                     hideLoad();
  250.                     items = new ArrayList<Feed>();
  251.  
  252.                     for(int i = 0; i < responseList.size(); i++) {
  253.                         items.add(new Feed(responseList.get(i).getObjectId(),
  254.                                 responseList.get(i).getString("Title"),
  255.                                 responseList.get(i).getString("Description"),
  256.                                 responseList.get(i).getString("CompleteText"),
  257.                                 responseList.get(i).getString("imageURL"),
  258.                                 responseList.get(i).getString("Link_on_Site")));
  259.                     }
  260.  
  261.  
  262.                     if(items.size() <= 0) {
  263.                         ErrorFragment errorFragment = new ErrorFragment();
  264.                         FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
  265.                         transaction.replace(R.id.fragment_placeholder, errorFragment, "A");
  266.                         transaction.addToBackStack(null);
  267.                         transaction.commit();
  268.                     } else {
  269.  
  270.                         adapter = new FeedAdapter(getActivity(), items);
  271.                         adapter.notifyDataSetChanged();
  272.                         mListView.setAdapter(adapter);
  273.                         endLoad();
  274.                     }
  275.  
  276.                 } else if(responseList.size() <= 0) {
  277.                     System.out.println("Error 0");
  278.  
  279.                 } else {
  280.                     System.out.println("Error 1");
  281.                 }
  282.             }
  283.         });
  284.  
  285.     }
  286.  
  287. //    @Override
  288. //    public void onScrollStateChanged(AbsListView absListView, int i) {
  289. //
  290. //    }
  291. //
  292. //    @Override
  293. //    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
  294. //        try {
  295. //            if(firstVisibleItem+visibleItemCount == totalItemCount && totalItemCount!=0)
  296. //            {
  297. //                if(!mIsLoading) {
  298. //                    if(mListView.getFooterViewsCount() >= 0) {
  299. //                        mListView.addFooterView(mFooterView);
  300. //                    }
  301. //                    new LoadMore().execute();
  302. //                    mIsLoading = true;
  303. //                }
  304. //            }
  305. //        } catch (Exception e) {
  306. //            e.printStackTrace();
  307. //        }
  308. //    }
  309.  
  310. }
Advertisement
Add Comment
Please, Sign In to add comment