Advertisement
Guest User

Untitled

a guest
Aug 4th, 2015
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.95 KB | None | 0 0
  1. package com.stylezappmen.android.fragments;
  2.  
  3.  
  4. import android.app.Activity;
  5. import android.content.Intent;
  6. import android.os.Bundle;
  7. import android.support.v4.app.Fragment;
  8. import android.view.LayoutInflater;
  9. import android.view.Menu;
  10. import android.view.MenuInflater;
  11. import android.view.MenuItem;
  12. import android.view.View;
  13. import android.view.ViewGroup;
  14. import android.widget.AdapterView;
  15. import android.widget.ImageView;
  16. import android.widget.RelativeLayout;
  17. import android.widget.TextView;
  18.  
  19. import com.costum.android.widget.LoadMoreListView;
  20. import com.stylezappmen.android.R;
  21. import com.stylezappmen.android.activities.SingleProductActivity;
  22. import com.stylezappmen.android.adapters.list.ProductsListAdapter;
  23. import com.stylezappmen.android.enums.DialogType;
  24. import com.stylezappmen.android.interfaces.DialogCallbacks;
  25. import com.stylezappmen.android.interfaces.IRequestableDefaultImpl;
  26. import com.stylezappmen.android.interfaces.ProductInteractionDefaultImpl;
  27. import com.stylezappmen.android.interfaces.ProgressCallbacks;
  28. import com.stylezappmen.android.models.Product;
  29. import com.stylezappmen.android.network.API;
  30. import com.stylezappmen.android.utils.ConstantUtils;
  31.  
  32. import java.util.ArrayList;
  33. import java.util.Arrays;
  34.  
  35. /**
  36. * A simple {@link Fragment} subclass.
  37. */
  38. public class FavoritesFragment extends Fragment {
  39.  
  40. private static final String MAX_PAGE_COUNT = "max_page_count";
  41.  
  42. protected LoadMoreListView favoritesList;
  43. protected RelativeLayout blankContainer;
  44. protected TextView blankText;
  45. protected ImageView blankImage;
  46. protected ProductsListAdapter adapter;
  47. protected DialogCallbacks dialogCallbacks;
  48. protected ProgressCallbacks progressCallbacks;
  49. int page = 1;
  50. int maxPageCount;
  51.  
  52. public FavoritesFragment() {
  53. // Required empty public constructor
  54. }
  55.  
  56. @Override
  57. public void onCreate(Bundle savedInstanceState) {
  58. super.onCreate(savedInstanceState);
  59. adapter = new ProductsListAdapter(getActivity());
  60. adapter.setFavorite(true);
  61. setHasOptionsMenu(true);
  62.  
  63. if (savedInstanceState != null)
  64. maxPageCount = savedInstanceState.getInt(MAX_PAGE_COUNT);
  65. }
  66.  
  67.  
  68. @Override
  69. public void onSaveInstanceState(Bundle outState) {
  70. outState.putInt(MAX_PAGE_COUNT, maxPageCount);
  71. super.onSaveInstanceState(outState);
  72. }
  73.  
  74. @Override
  75. public void onAttach(Activity activity) {
  76. super.onAttach(activity);
  77. dialogCallbacks = (DialogCallbacks) activity;
  78. progressCallbacks = (ProgressCallbacks) activity;
  79. }
  80.  
  81. @Override
  82. public void onDetach() {
  83. super.onDetach();
  84. progressCallbacks.hideLoader();
  85. dialogCallbacks = null;
  86. progressCallbacks = null;
  87. }
  88.  
  89. @Override
  90. public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
  91. super.onCreateOptionsMenu(menu, inflater);
  92. inflater.inflate(R.menu.menu_favorites, menu);
  93. }
  94.  
  95. @Override
  96. public boolean onOptionsItemSelected(MenuItem item) {
  97. switch (item.getItemId()) {
  98. case R.id.action_email:
  99. dialogCallbacks.showDialog(DialogType.NOTIFIED, "");
  100. break;
  101. case R.id.action_dislike_all:
  102. progressCallbacks.showLoader();
  103. API.dislikeAll(new IRequestableDefaultImpl(getActivity(), this) {
  104. @Override
  105. public void completed(Object... params) {
  106. if (isAdded())
  107. getActivity().runOnUiThread(new Runnable() {
  108. @Override
  109. public void run() {
  110. progressCallbacks.hideLoader();
  111. adapter.swap(new ArrayList<>());
  112.  
  113. renderProducts();
  114. }
  115. });
  116. }
  117. });
  118. break;
  119. }
  120. return super.onOptionsItemSelected(item);
  121. }
  122.  
  123. @Override
  124. public View onCreateView(LayoutInflater inflater, ViewGroup container,
  125. Bundle savedInstanceState) {
  126. View view = inflater.inflate(R.layout.fragment_favorites, container, false);
  127. blankContainer = (RelativeLayout) view.findViewById(R.id.blank_container);
  128. favoritesList = (LoadMoreListView) view.findViewById(R.id.products_list);
  129. blankText = (TextView) view.findViewById(R.id.blank_text);
  130. blankImage = (ImageView) view.findViewById(R.id.blank_image);
  131.  
  132. favoritesList.setAdapter(adapter);
  133.  
  134. favoritesList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  135. @Override
  136. public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
  137. Product product = (Product) adapter.getItem(position);
  138. startActivity(new Intent(getActivity(), SingleProductActivity.class).putExtra(SingleProductActivity.PRODUCT_EXTRA, product));
  139. }
  140. });
  141.  
  142. adapter.setOnProductInteractionListener(new ProductInteractionDefaultImpl() {
  143. @Override
  144. public void onRemove(final int position) {
  145. Product product = (Product) adapter.getItem(position);
  146. progressCallbacks.showLoader();
  147. API.dislike(product.id, new IRequestableDefaultImpl(getActivity(), FavoritesFragment.this) {
  148. @Override
  149. public void completed(Object... params) {
  150. getActivity().runOnUiThread(new Runnable() {
  151. @Override
  152. public void run() {
  153. progressCallbacks.hideLoader();
  154. adapter.remove(position);
  155.  
  156. renderProducts();
  157. }
  158. });
  159. }
  160. });
  161. }
  162.  
  163. @Override
  164. public void onShare(int position) {
  165. Product product = (Product) adapter.getItem(position);
  166. dialogCallbacks.showDialog(DialogType.SHARE, product.shareText);
  167. }
  168. });
  169.  
  170.  
  171. // ArrayList<Product> products = new ArrayList<>();
  172. // for (int i = 0; i < 10; i++) {
  173. // Product product = new Product(UUID.randomUUID().toString(), R.drawable.ic_jacket, i + 188.90, i + 220.50, "Suede Bomber Blue Jacket for Men 2015", "ARMANI");
  174. // products.add(product);
  175. // }
  176. // adapter.swap(products);
  177.  
  178. loadFavorites(false);
  179.  
  180. favoritesList.setOnLoadMoreListener(new LoadMoreListView.OnLoadMoreListener() {
  181. @Override
  182. public void onLoadMore() {
  183. if (page < maxPageCount) {
  184. page++;
  185. loadFavorites(true);
  186. }
  187. }
  188. });
  189.  
  190. return view;
  191. }
  192.  
  193. private void loadFavorites(boolean isLoadMore) {
  194. if (isAdded()) {
  195. if (!isLoadMore)
  196. progressCallbacks.showLoader();
  197.  
  198. API.products("/my", page, new IRequestableDefaultImpl(getActivity(), this) {
  199. @Override
  200. public void completed(final Object... params) {
  201. if (isAdded())
  202. getActivity().runOnUiThread(new Runnable() {
  203. @Override
  204. public void run() {
  205. progressCallbacks.hideLoader();
  206. ArrayList<Product> products = new ArrayList<>(Arrays.asList((Product[]) params[0]));
  207. adapter.addAllProducts(products);
  208. favoritesList.onLoadMoreComplete();
  209. renderProducts();
  210. maxPageCount = (Integer) params[2];
  211. favoritesList.setShouldLoadMore(page < maxPageCount);
  212. }
  213. });
  214. }
  215.  
  216. @Override
  217. public void failed(Object... params) {
  218. super.failed(params);
  219. if (isAdded())
  220. getActivity().runOnUiThread(new Runnable() {
  221. @Override
  222. public void run() {
  223. favoritesList.onLoadMoreComplete();
  224. }
  225. });
  226. }
  227. });
  228. }
  229. }
  230.  
  231. private void renderProducts() {
  232. if (adapter.getCount() > 0) {
  233. favoritesList.setVisibility(View.VISIBLE);
  234. blankContainer.setVisibility(View.GONE);
  235. setMenuVisibility(true);
  236. } else {
  237. setMenuVisibility(false);
  238. favoritesList.setVisibility(View.GONE);
  239. blankContainer.setVisibility(View.VISIBLE);
  240. blankText.setText(getString(R.string.blank_favorites));
  241. blankImage.setImageResource(ConstantUtils.IS_MALE ? R.drawable.ic_not_liked_men : R.drawable.ic_not_liked);
  242. }
  243. }
  244.  
  245. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement