У меня есть RecyclerView, и вы можете добавлять / удалять элементы там.Моя проблема в том, что адаптер показывает неправильный элемент (не обновляет элемент), который я выбрал для удаления.Я имею в виду, что в моей базе данных он удаляет нужный элемент, но в приложении это неправильно , если Я не перезапущу действие, тогда оно обновится и покажет правильные элементы.Я думаю, что это может быть сбой с FirebaseAdapter.Я не уверен, но в любом случае это мой код.
FirebaseRecyclerOptions<Event> firebaseRecyclerOptions = new FirebaseRecyclerOptions.Builder<Event>()
.setQuery(query, Event.class).build();
firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Event, ProductHolder>(firebaseRecyclerOptions) {
@Override
protected void onBindViewHolder(final ProductHolder holder, final int position, Event model) {
model = mDataSet.get(position);
holder.mItemName.setText(model.getName());
holder.mItemDate.setText(model.getDate());
final Event finalModel = model;
holder.relativeLayout.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
mDatabaseFreezer.child(finalModel.get_id()).removeValue(); //this is how I remove the item
return true;
}
});
}
@Override
public ProductHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.recycler_view_row_snippet,parent,false);
return new ProductHolder(view);
}
};
Я также пытался использовать notifyDataSetChange, но я не думаю, что FirebaseAdapter действительно нуждается в этом.
Обновление
Вот так я получаю данные из своей базы данных
mDatabaseFreezer.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
HashMap<String, String> value = (HashMap<String,String>) dataSnapshot.getValue();
if (value != null) {
String name = value.get("Name");
String date = value.get("Date");
String key = value.get("Key");
String productAmount = value.get("Amount");
Event event = new Event();
event.setId(key);
mDataSet.add(new Event(name,date, key, productAmount));
}
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
2-е обновление
Так что мой код был правильным все время япросто не включил код, в котором я сортирую ArrayList по датам, которые испортили порядок элементов, удалив неправильные элементы.