Advertisement
Guest User

Untitled

a guest
May 3rd, 2016
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.26 KB | None | 0 0
  1. public class RequestItems extends AsyncTask<Void, Void, Void> {
  2. Context context;
  3. ProgressDialog progressDialog;
  4. List<ParseObject> parseObjects;
  5. List<FeedItem> feedItems = new ArrayList<>();
  6. EventsRecyclerView eventsRecyclerView;
  7. RecyclerView recyclerView;
  8. int skip = 0;
  9.  
  10. RequestItems(Context context, RecyclerView recyclerView) {
  11. this.context = context;
  12. this.recyclerView = recyclerView;
  13.  
  14. }
  15.  
  16. @Override
  17. protected void onPreExecute() {
  18. progressDialog = new ProgressDialog(context);
  19. progressDialog.setMessage("Loading");
  20. progressDialog.show();
  21. progressDialog.setCancelable(false);
  22. super.onPreExecute();
  23. }
  24.  
  25. @Override
  26. protected Void doInBackground(Void... params) {
  27. eventsRecyclerView = null;
  28. Loadmore(eventsRecyclerView);
  29. return null;
  30. }
  31.  
  32. @Override
  33. protected void onPostExecute(Void aVoid) {
  34. super.onPostExecute(aVoid);
  35. progressDialog.dismiss();
  36. final Handler handler = new Handler();
  37. final EventsRecyclerView eventsRecyclerView = new EventsRecyclerView(context, feedItems);
  38. int spacingInPixels = context.getResources().getDimensionPixelSize(R.dimen.spacing2);
  39. recyclerView.addItemDecoration(new SpacesItemDecoration(spacingInPixels));
  40. LinearLayoutManager manager = new LinearLayoutManager(context);
  41. recyclerView.setLayoutManager(manager);
  42. recyclerView.setOnScrollListener(new EndlessScroll(manager, context) {
  43. @Override
  44. public void onLoadMore(int current_page) {
  45.  
  46. feedItems.add(null);
  47. skip = skip + 2;
  48. eventsRecyclerView.notifyItemInserted(feedItems.size());
  49. handler.postDelayed(new Runnable() {
  50.  
  51. @Override
  52. public void run() {
  53.  
  54. feedItems.remove(feedItems.size() - 1);
  55. eventsRecyclerView.notifyItemRemoved(feedItems.size());
  56. Loadmore(eventsRecyclerView);
  57. }
  58. }, 2000);
  59.  
  60.  
  61. }
  62. });
  63.  
  64. recyclerView.setAdapter(eventsRecyclerView);
  65.  
  66. }
  67.  
  68. private void Loadmore(EventsRecyclerView eventsRecyclerView) {
  69. ParseQuery<ParseObject> query = ParseQuery.getQuery("Events");
  70. query.setSkip(skip);
  71. query.setLimit(2);
  72. query.orderByDescending("createdAt");
  73. try {
  74. parseObjects = query.find();
  75. } catch (ParseException e) {
  76. e.printStackTrace();
  77. }
  78. if (!parseObjects.isEmpty()) {
  79. for (int i = 0; i < parseObjects.size(); i++) {
  80. FeedItem item = new FeedItem();
  81. item.setTitle(parseObjects.get(i).getString("Title"));
  82. item.setDate(parseObjects.get(i).getString("Date"));
  83. item.setTime(parseObjects.get(i).getString("Time"));
  84. item.setVenue(parseObjects.get(i).getString("Venue"));
  85. item.setLike(parseObjects.get(i).getBoolean("Like"));
  86. ParseFile file = parseObjects.get(i).getParseFile("EventImage");
  87. try {
  88. byte bytes[] = file.getData();
  89. Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
  90. Bitmap bitmap1 = Bitmap.createScaledBitmap(bitmap, 100, 150, true);
  91. item.setEventImage(bitmap1);
  92. feedItems.add(item);
  93. if (eventsRecyclerView != null) {
  94. eventsRecyclerView.notifyItemInserted(feedItems.size() + 1);
  95. }
  96.  
  97.  
  98. } catch (ParseException e) {
  99. e.printStackTrace();
  100. }
  101. }
  102. }
  103. }
  104. }
  105.  
  106. public abstract class EndlessScroll extends RecyclerView.OnScrollListener {
  107. public static String TAG = EndlessScroll.class.getSimpleName();
  108.  
  109. private int previousTotal = 0; // The total number of items in the dataset after the last load
  110. private boolean loading = true; // True if we are still waiting for the last set of data to load.
  111. private int visibleThreshold = 2; // The minimum amount of items to have below your current scroll position before loading more.
  112. int firstVisibleItem, visibleItemCount, totalItemCount;
  113.  
  114. Context context;
  115.  
  116. private int current_page = 1;
  117.  
  118. private LinearLayoutManager mLinearLayoutManager;
  119.  
  120. public EndlessScroll(LinearLayoutManager linearLayoutManager, Context context) {
  121. this.mLinearLayoutManager = linearLayoutManager;
  122. this.context = context;
  123. }
  124.  
  125. @Override
  126. public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
  127. super.onScrolled(recyclerView, dx, dy);
  128.  
  129.  
  130. visibleItemCount = recyclerView.getChildCount();
  131. totalItemCount = mLinearLayoutManager.getItemCount();
  132. firstVisibleItem = mLinearLayoutManager.findFirstVisibleItemPosition();
  133.  
  134. if (loading) {
  135.  
  136.  
  137. if (totalItemCount > previousTotal) {
  138. loading = false;
  139. previousTotal = totalItemCount;
  140. }
  141. }
  142. if (!loading && (totalItemCount - visibleItemCount)
  143. <= (firstVisibleItem + visibleThreshold)) {
  144.  
  145.  
  146. // End has been reached
  147.  
  148. // Do something
  149. current_page++;
  150. onLoadMore(current_page);
  151.  
  152. loading = true;
  153. }
  154. }
  155.  
  156. public abstract void onLoadMore(int current_page);
  157. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement