At the moment I managed to add a date
field to my model Target
.
The structure you can see in the screen:
Also i have a fragment where I display the calendar. How can I tell by clicking on a date if there is a target created for that date?
class CalendarFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_calendar, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setupViews()
}
private fun setupViews() {
calendarView.setOnDateChangeListener { view, year, month, dayOfMonth ->
dateView.text = //name of Target
}
}
}
For example now i display only date in calendar with next code:
dateView.text = "Selected date is " + dayOfMonth + "/" + (month + 1) + "/" + year
Q: How i can display target name for a specific date?
UPD: Right now i insert this code in my fragment, which i took from this answer:
val uid = FirebaseAuth.getInstance().currentUser!!.uid
val rootRef = FirebaseDatabase.getInstance().reference
val targetsRef = rootRef.child("targets").child("users").child(uid).child("targets")
val query = targetsRef.orderByChild("date")
val valueEventListener = object : ValueEventListener {
override fun onDataChange(dataSnapshot: DataSnapshot) {
for (ds in dataSnapshot.children) {
val name = ds.child("name").getValue(String::class.java)
Log.d("some", name)
}
}
override fun onCancelled(databaseError: DatabaseError) {
Log.d("some", databaseError.getMessage()) //Don't ignore errors!
}
}
query.addListenerForSingleValueEvent(valueEventListener)
But now when I go into the fragment I get the names of all the targets created regardless of the selected date in the calendar.