-
Notifications
You must be signed in to change notification settings - Fork 89
Expand file tree
/
Copy pathCalendarAdapter.java
More file actions
64 lines (54 loc) · 1.89 KB
/
CalendarAdapter.java
File metadata and controls
64 lines (54 loc) · 1.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package codewithcal.au.calendarappexample;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.time.LocalDate;
import java.util.ArrayList;
class CalendarAdapter extends RecyclerView.Adapter<CalendarViewHolder>
{
private final ArrayList<LocalDate> days;
private final OnItemListener onItemListener;
public CalendarAdapter(ArrayList<LocalDate> days, OnItemListener onItemListener)
{
this.days = days;
this.onItemListener = onItemListener;
}
@NonNull
@Override
public CalendarViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType)
{
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View view = inflater.inflate(R.layout.calendar_cell, parent, false);
ViewGroup.LayoutParams layoutParams = view.getLayoutParams();
if(days.size() > 15) //month view
layoutParams.height = (int) (parent.getHeight() * 0.166666666);
else // week view
layoutParams.height = (int) parent.getHeight();
return new CalendarViewHolder(view, onItemListener, days);
}
@Override
public void onBindViewHolder(@NonNull CalendarViewHolder holder, int position)
{
final LocalDate date = days.get(position);
if(date == null)
holder.dayOfMonth.setText("");
else
{
holder.dayOfMonth.setText(String.valueOf(date.getDayOfMonth()));
if(date.equals(CalendarUtils.selectedDate))
holder.parentView.setBackgroundColor(Color.LTGRAY);
}
}
@Override
public int getItemCount()
{
return days.size();
}
public interface OnItemListener
{
void onItemClick(int position, LocalDate date);
}
}