public class UserAdapter extends RecyclerView.Adapter<UserAdapter.UserViewHolder> {
private List<UserModel> list;
public UserAdapter(List<UserModel> list) {
this.list = list;
}
@Override
public UserViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new UserViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.view_item,parent,false));
}
@Override
public void onBindViewHolder(final UserViewHolder holder, int position) {
UserModel user = list.get(position);
holder.textName.setText(user.firstName + " "+ user.number);
holder.textDate.setText(user.date);
holder.textTime.setText(user.time);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Context context = view.getContext();
Intent intent = new Intent(context,Main2Activity.class);
context.startActivity(intent);
}
});
}
@Override
public int getItemCount() {
return list.size();
}
class UserViewHolder extends RecyclerView.ViewHolder {
TextView textName, textTime, textDate;
public UserViewHolder(View itemView) {
super(itemView);
textTime = (TextView) itemView.findViewById(R.id.time);
textName = (TextView) itemView.findViewById(R.id.text_name);
textDate = (TextView) itemView.findViewById(R.id.text_date);
}
}
}
public class UserModel {
String firstName,number,key,date,time;
public UserModel(){
}
public UserModel(String firstName, String number, String key, String date, String time) {
this.firstName = firstName;
this.number = number;
this.key = key;
this.date = date;
this.time = time;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
}
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private List<UserModel> result;
private UserAdapter adapter;
CalendarView calendarView;
String selectedDate;
private FirebaseDatabase database;
private DatabaseReference reference;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_email_password);
Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("dd_MM_yyyy");
Date date = new Date();
calendarView = (CalendarView) findViewById(R.id.calendarView);
selectedDate = sdf.format(date);
try {
calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
@Override
public void onSelectedDayChange(@NonNull CalendarView calendarView, int year, int month, int dayOfMonth) {
int mYear = year;
int mMonth = month;
int mDay = dayOfMonth;
selectedDate = new StringBuilder().append(mDay).append("_").append(mMonth + 1).append("_")
.append(mYear).toString();
Toast.makeText(MainActivity.this, selectedDate, Toast.LENGTH_SHORT).show();
reference = database.getReference(selectedDate);
}
});
database = FirebaseDatabase.getInstance();
reference = database.getReference(selectedDate);
result = new ArrayList<>();
recyclerView = (RecyclerView) findViewById(R.id.userList);
recyclerView.setHasFixedSize(true);
LinearLayoutManager llm = new LinearLayoutManager(this);
llm.setOrientation(LinearLayout.VERTICAL);
recyclerView.setLayoutManager(llm);
adapter = new UserAdapter(result);
recyclerView.setAdapter(adapter);
updateList();
} catch (NullPointerException e) {
}
}
private void updateList() {
reference.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
// result.clear();
result.add(dataSnapshot.getValue(UserModel.class));
adapter.notifyDataSetChanged();
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
UserModel model = dataSnapshot.getValue(UserModel.class);
int index = getItemIndex(model);
result.set(index, model);
adapter.notifyItemChanged(index);
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
UserModel model = dataSnapshot.getValue(UserModel.class);
int index = getItemIndex(model);
result.remove(index);
adapter.notifyItemRemoved(index);
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
private int getItemIndex(UserModel user) {
int index = -1;
for (int i = 0; i < result.size(); i++) {
if (result.get(i).key.equals(user.key))
index = i;
break;
}
return index;
}
}