Поэтому, когда я удаляю элемент в представлении переработчика, происходит странная вещь, когда другие элементы просто остаются на месте и не заполняют пустое место, где ранее был удаленный элемент. Здесь - это изображение того, что происходит.
Мой адаптер для повторного просмотра:
public class ActiveClassAdapter extends FirestoreRecyclerAdapter<Student, ActiveClassAdapter.ActiveClassHolder> {
public ActiveClassAdapter(@NonNull FirestoreRecyclerOptions<Student> options) {
super(options);
}
@Override
protected void onBindViewHolder(@NonNull ActiveClassHolder holder, int position, @NonNull Student model) {
holder.textViewName.setText("" + model.getFirstName().trim() + " " + model.getLastName().trim());
holder.textViewLevel.setText("" + model.getLevel());
}
@NonNull
@Override
public ActiveClassHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.student_item, parent, false);
return new ActiveClassHolder(v);
}
public void deleteItem(int position){
getSnapshots().getSnapshot(position).getReference().delete();
}
public boolean isEmpty(){
if(getItemCount() == 0)
return true;
else
return false;
}
public class ActiveClassHolder extends RecyclerView.ViewHolder{
TextView textViewName;
TextView textViewLevel;
public ActiveClassHolder(@NonNull View itemView) {
super(itemView);
textViewLevel = itemView.findViewById(R.id.text_view_studentLevel);
textViewName = itemView.findViewById(R.id.text_view_studentName);
}
}
}
Код для настройки моего просмотра:
private void setUpRecyclerView() {
Query query = activeRef.orderBy("level").orderBy("lastName", Query.Direction.DESCENDING);
FirestoreRecyclerOptions<Student> options = new FirestoreRecyclerOptions.Builder<Student>()
.setQuery(query, Student.class).build();
adapter = new ActiveClassAdapter(options);
final RecyclerView recyclerView = findViewById(R.id.active_recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(adapter);
new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.RIGHT) {
@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
return false;
}
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
int position = viewHolder.getAdapterPosition();
adapter.deleteItem(position);
adapter.notify();
}
}).attachToRecyclerView(recyclerView);
}