I have a RecyclerView
that I fill in with the data that I store in Firebase , what I try to do is that when a new item is added, a text like for example new
Something like this:
How can I do this?
NombresAdapter
public class NombresAdapter extends RecyclerView.Adapter<NombresAdapter.MyViewHolder> {
private final Context mContext;
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();
private List<Nombres> nombresList = new ArrayList<>();
public NombresAdapter(Context context) {
mContext = context;
}
public void setData(List<Nombres> nombres) {
nombresList.clear();
nombresList.addAll(nombres);
notifyDataSetChanged();
}
@Override
public NombresAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.nombres_list_item, parent, false);
return new MyViewHolder(v);
}
@Override
public void onBindViewHolder(final NombresAdapter.MyViewHolder holder, final int position) {
final Nombres nombres = nombresList.get(position);
holder.myTextView.setText(nombres.getDatosnombres());
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(mContext, " " + nombresList.get(position).toString(), Toast.LENGTH_SHORT).show();
}
});
holder.myButtonDelete.setText("Delete");
holder.myButtonDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
databaseReference.child("Nombres").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
Nombres nombresTemp = snapshot.getValue(Nombres.class);
if (nombres.getDatosnombres().equals(nombresTemp.getDatosnombres())) {
databaseReference.child("Nombres").child(snapshot.getKey().toString()).removeValue();
nombresList.remove(position);
notifyDataSetChanged();
if (nombresList.size() == 0) {
MainActivity.textViewEmptyView.setVisibility(View.VISIBLE);
}
break;
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
});
}
@Override
public int getItemCount() {
return nombresList.size();
}
public static class MyViewHolder extends RecyclerView.ViewHolder {
public TextView myTextView;
public Button myButtonDelete;
public MyViewHolder(View itemView) {
super(itemView);
myTextView = (TextView) itemView.findViewById(R.id.tvDatosnombres);
myButtonDelete = (Button) itemView.findViewById(R.id.deleteButton);
}
}
}
Activity
:
public RecyclerView recyclerListView;
public NombresAdapter myAdapter;
public static TextView textViewEmptyView;
DatabaseReference databaseReference;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textViewEmptyView = (TextView) findViewById(R.id.tvEmptyView);
recyclerListView = (RecyclerView) findViewById(R.id.recylerview_list);
textViewEmptyView = (TextView) findViewById(R.id.tvEmptyView);
recyclerListView=(RecyclerView) findViewById(R.id.recylerview_list);
recyclerListView.setLayoutManager(new LinearLayoutManager(this));
myAdapter= new NombresAdapter(this);
recyclerListView.setAdapter(myAdapter);
databaseReference= FirebaseDatabase.getInstance().getReference();
updateAdapter();}
public void updateAdapter(){
final List<Nombres> listNombres= new ArrayList<>();
databaseReference.child("Nombres").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
listNombres.add(dataSnapshot.getValue(Nombres.class));
displayNombres(listNombres);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
updateAdapter();
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
//display the nombres on Adapter
public void displayNombres(List<Nombres> ls){
textViewEmptyView.setVisibility(View.GONE);
recyclerListView.setVisibility(View.VISIBLE);
myAdapter.setData(ls);
myAdapter.notifyDataSetChanged();
}
@Override
protected void onDestroy() {
super.onDestroy();
}
}