Hi i need to stop an RecyclerView reloading the data when scrolling up but I don't know how to :( and I search about it but i can't find any answer
Adapter: mPostAdapterNew
RecyclerView : MPostRV_new
So can you guys help me ? thanks in advance :D
Edit: This is my code:
private void setupAdaptaterNew() {
mPostAdapterNew = new FirebaseRecyclerAdapter<Post, PostViewHolder>(
Post.class,
R.layout.item_layout_evenimente,
PostViewHolder.class,
mPostRef
) {
@Override
public void populateViewHolder(final PostViewHolder viewHolder, final Post model, final int position) {
final long EndZi = viewHolder.setEndZi(model.getEndZi());
final int EndLuna = viewHolder.setEndLuna(model.getEndLuna());
final int EndAn = viewHolder.setEndAn(model.getEndAn());
Calendar cal = Calendar.getInstance();
final Button btnAddEvent = viewHolder.itemView.findViewById(R.id.BtnParticip);
final Button btnDeleteEvent = viewHolder.itemView.findViewById(R.id.BtnNuParticip);
final int EndOra = viewHolder.setEndOra(model.getEndOra());
final int EndMinute = viewHolder.setEndMinute(model.getEndMinute());
final String headline = viewHolder.setHeadline(model.getHeadline());
final String locatie = viewHolder.setStrada(model.getStrada());
final String organizator = viewHolder.setOrganizator(model.getOrganizator());
final String descriere = viewHolder.setPostDescriere(model.getDescriere());
final ContentResolver cr = getActivity().getContentResolver();
final ContentValues values = new ContentValues();
final ContentResolver crReminder = getActivity().getContentResolver();
final ContentValues valuesReminder = new ContentValues();
final Uri event = null;
final TextView nr_persoane = viewHolder.itemView.findViewById(R.id.nr_persoane);
final String key = this.getRef(position).getKey();
final Cursor data = mDatabaseHelper.getData();
cal.set(Calendar.HOUR, 24);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.MILLISECOND, 0);
cal.set(Calendar.MONTH, EndLuna);
cal.set(Calendar.DAY_OF_MONTH, (int) EndZi);
cal.set(Calendar.YEAR, EndAn);
if (Calendar.getInstance().before(cal)) {
StorageReference storageReference = FirebaseStorage.getInstance().getReferenceFromUrl(model.getImageUrl());
Glide.with(Fragment_events_new.this)
.using(new FirebaseImageLoader())
.load(storageReference)
.asBitmap()
.centerCrop()
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
viewHolder.postIV.setImageBitmap(resource);
}
});
viewHolder.setHeadline(model.getHeadline());
viewHolder.setZiua(model.getZiua());
viewHolder.setLuna(model.getLuna());
viewHolder.setOra(model.getOra());
viewHolder.setOrganizator(model.getOrganizator());
viewHolder.setCategoria(model.getCategoria());
viewHolder.setStrada(model.getStrada());
viewHolder.setLocalitatea(model.getLocalitatea());
viewHolder.setPostDescriere(model.getDescriere());
viewHolder.setNrPersoane(model.getNrPeople());
} else {
viewHolder.itemView.setVisibility(View.GONE);
viewHolder.itemView.setLayoutParams(new RecyclerView.LayoutParams(0, 0));
}
btnAddEvent.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.WRITE_CALENDAR) != PackageManager.PERMISSION_GRANTED ||
ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.READ_CALENDAR) != PackageManager.PERMISSION_GRANTED) {
Toast.makeText(getActivity(), "Permisii insuficiente.\n Va rugam sa activati permisiunea de CALENDAR", Toast.LENGTH_LONG).show();
NoPermissions();
} else {
addEvent(values, EndZi, EndAn, EndLuna, EndOra, EndMinute, headline, descriere, locatie, organizator, event, cr, valuesReminder, crReminder);
int i = viewHolder.setNrPersoane(model.getNrPeople()) + 1;
nr_persoane.setText(String.valueOf(i));
mPostRef.child(key).child("nrPeople").setValue(i);
}
}
});
btnDeleteEvent.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
deleteEvent(data, headline);
btnAddEvent.setVisibility(View.VISIBLE);
btnDeleteEvent.setVisibility(View.GONE);
int i = viewHolder.setNrPersoane(model.getNrPeople()) - 1;
nr_persoane.setText(String.valueOf(i));
mPostRef.child(key).child("nrPeople").setValue(i);
}
});
if (CheckDB(headline)) {
btnAddEvent.setVisibility(View.GONE);
btnDeleteEvent.setVisibility(View.VISIBLE);
} else {
btnAddEvent.setVisibility(View.VISIBLE);
btnDeleteEvent.setVisibility(View.GONE);
}
}
};
}
@SuppressLint("MissingPermission")
private void addEvent(ContentValues values, float EndZi, int EndAn, int EndLuna, int EndOra, int EndMinute,
String headline, String descriere, String locatie, String organizator,
Uri event, ContentResolver cr, ContentValues valuesReminder, ContentResolver crReminder) {
long startMillis = 0;
long endMillis = 0;
Calendar beginTime = Calendar.getInstance();
beginTime.set(EndAn, EndLuna, (int) EndZi, EndOra, EndMinute);
startMillis = beginTime.getTimeInMillis();
Calendar endTime = Calendar.getInstance();
endTime.set(EndAn, EndLuna, (int) EndZi, EndOra, EndMinute);
endMillis = endTime.getTimeInMillis();
//Add Values
values.put(CalendarContract.Events.DTSTART, startMillis);
values.put(CalendarContract.Events.TITLE, headline);
values.put(CalendarContract.Events.DESCRIPTION, descriere); //TODO change description here!
TimeZone timeZone = TimeZone.getDefault();
values.put(CalendarContract.Events.EVENT_TIMEZONE, timeZone.getID());
values.put(CalendarContract.Events.CALENDAR_ID, 1);
values.put(CalendarContract.Events.DTEND, endMillis);
values.put(CalendarContract.Events.EVENT_LOCATION, locatie);
values.put(CalendarContract.Events.ORGANIZER, organizator);
event = cr.insert(CalendarContract.Events.CONTENT_URI, values);
valuesReminder.put(CalendarContract.Reminders.DTSTART, startMillis);
Uri REMINDERS_URI_DAY = Uri.parse(getCalendarUriBase(true) + "reminders");
valuesReminder = new ContentValues();
valuesReminder.put("event_id", Long.parseLong(event.getLastPathSegment()));
valuesReminder.put("method", 1);
valuesReminder.put("minutes", 1440);
Uri uriReminderDay = crReminder.insert(REMINDERS_URI_DAY, valuesReminder);
Uri REMINDERS_URI_HOUR = Uri.parse(getCalendarUriBase(true) + "reminders");
valuesReminder = new ContentValues();
valuesReminder.put("event_id", Long.parseLong(event.getLastPathSegment()));
valuesReminder.put("method", 1);
valuesReminder.put("minutes", 120);
Uri uriReminder = crReminder.insert(REMINDERS_URI_HOUR, valuesReminder);
createDialog(headline, "Ati adaugat evenimentul in calendar!");
String event_id = String.valueOf(Long.parseLong(event.getLastPathSegment()));
AddData(headline, event_id);
}
private void deleteEvent(Cursor data, String headline) {
while (data.moveToNext()) {
if (data.getString(1).equals(headline)) {
Uri deleteUri = null;
deleteUri = ContentUris.withAppendedId(CalendarContract.Events.CONTENT_URI, Long.parseLong(data.getString(2)));
int rows = getActivity().getContentResolver().delete(deleteUri, null, null);
createDialog(headline, "Ati sters evenimentu din calendar!");
mDatabaseHelper.deleteData(headline, data.getString(2));
}
}
}
private boolean CheckDB(String headline) {
Cursor data = mDatabaseHelper.getData();
while (data.moveToNext()) {
if (data.getString(1).equals(headline)) {
return true;
}
}
return false;
}