Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class RequestItems extends AsyncTask<Void, Void, Void> {
- Context context;
- ProgressDialog progressDialog;
- List<ParseObject> parseObjects;
- List<FeedItem> feedItems = new ArrayList<>();
- EventsRecyclerView eventsRecyclerView;
- RecyclerView recyclerView;
- int skip = 0;
- RequestItems(Context context, RecyclerView recyclerView) {
- this.context = context;
- this.recyclerView = recyclerView;
- }
- @Override
- protected void onPreExecute() {
- progressDialog = new ProgressDialog(context);
- progressDialog.setMessage("Loading");
- progressDialog.show();
- progressDialog.setCancelable(false);
- super.onPreExecute();
- }
- @Override
- protected Void doInBackground(Void... params) {
- eventsRecyclerView = null;
- Loadmore(eventsRecyclerView);
- return null;
- }
- @Override
- protected void onPostExecute(Void aVoid) {
- super.onPostExecute(aVoid);
- progressDialog.dismiss();
- final Handler handler = new Handler();
- final EventsRecyclerView eventsRecyclerView = new EventsRecyclerView(context, feedItems);
- int spacingInPixels = context.getResources().getDimensionPixelSize(R.dimen.spacing2);
- recyclerView.addItemDecoration(new SpacesItemDecoration(spacingInPixels));
- LinearLayoutManager manager = new LinearLayoutManager(context);
- recyclerView.setLayoutManager(manager);
- recyclerView.setOnScrollListener(new EndlessScroll(manager, context) {
- @Override
- public void onLoadMore(int current_page) {
- feedItems.add(null);
- skip = skip + 2;
- eventsRecyclerView.notifyItemInserted(feedItems.size());
- handler.postDelayed(new Runnable() {
- @Override
- public void run() {
- feedItems.remove(feedItems.size() - 1);
- eventsRecyclerView.notifyItemRemoved(feedItems.size());
- Loadmore(eventsRecyclerView);
- }
- }, 2000);
- }
- });
- recyclerView.setAdapter(eventsRecyclerView);
- }
- private void Loadmore(EventsRecyclerView eventsRecyclerView) {
- ParseQuery<ParseObject> query = ParseQuery.getQuery("Events");
- query.setSkip(skip);
- query.setLimit(2);
- query.orderByDescending("createdAt");
- try {
- parseObjects = query.find();
- } catch (ParseException e) {
- e.printStackTrace();
- }
- if (!parseObjects.isEmpty()) {
- for (int i = 0; i < parseObjects.size(); i++) {
- FeedItem item = new FeedItem();
- item.setTitle(parseObjects.get(i).getString("Title"));
- item.setDate(parseObjects.get(i).getString("Date"));
- item.setTime(parseObjects.get(i).getString("Time"));
- item.setVenue(parseObjects.get(i).getString("Venue"));
- item.setLike(parseObjects.get(i).getBoolean("Like"));
- ParseFile file = parseObjects.get(i).getParseFile("EventImage");
- try {
- byte bytes[] = file.getData();
- Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
- Bitmap bitmap1 = Bitmap.createScaledBitmap(bitmap, 100, 150, true);
- item.setEventImage(bitmap1);
- feedItems.add(item);
- if (eventsRecyclerView != null) {
- eventsRecyclerView.notifyItemInserted(feedItems.size() + 1);
- }
- } catch (ParseException e) {
- e.printStackTrace();
- }
- }
- }
- }
- }
- public abstract class EndlessScroll extends RecyclerView.OnScrollListener {
- public static String TAG = EndlessScroll.class.getSimpleName();
- private int previousTotal = 0; // The total number of items in the dataset after the last load
- private boolean loading = true; // True if we are still waiting for the last set of data to load.
- private int visibleThreshold = 2; // The minimum amount of items to have below your current scroll position before loading more.
- int firstVisibleItem, visibleItemCount, totalItemCount;
- Context context;
- private int current_page = 1;
- private LinearLayoutManager mLinearLayoutManager;
- public EndlessScroll(LinearLayoutManager linearLayoutManager, Context context) {
- this.mLinearLayoutManager = linearLayoutManager;
- this.context = context;
- }
- @Override
- public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
- super.onScrolled(recyclerView, dx, dy);
- visibleItemCount = recyclerView.getChildCount();
- totalItemCount = mLinearLayoutManager.getItemCount();
- firstVisibleItem = mLinearLayoutManager.findFirstVisibleItemPosition();
- if (loading) {
- if (totalItemCount > previousTotal) {
- loading = false;
- previousTotal = totalItemCount;
- }
- }
- if (!loading && (totalItemCount - visibleItemCount)
- <= (firstVisibleItem + visibleThreshold)) {
- // End has been reached
- // Do something
- current_page++;
- onLoadMore(current_page);
- loading = true;
- }
- }
- public abstract void onLoadMore(int current_page);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement