- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在测试一个示例应用程序,我试图在其中显示特定日期的时间和日期。目前,即使事件是一天,它也只会绘制整个月。假设该 Activity 是在 1 月 5 日上午 9:30 到上午 10:30 之间,那么它将显示整个月,而不仅仅是 1 月 5 日。想要实现这样的目标:
目前,我的应用程序显示了整个月,即使是 1 月 1 日或 1 月 8 日的事件(这里有一个屏幕截图,例如,它错误地显示在 1 月 15 日那一周,即使这 2 个事件属于 2 个不同的日期):
我正在测试的代码在这里:https://github.com/raghunandankavi2010/SamplesAndroid/tree/master/CalendarTest
唯一的区别是我在 calendar.xml 类中添加了: app:mcv_showOtherDates="all"
下<com.prolificinteractive.materialcalendarview.MaterialCalendarView
显示每周 View 。另外,在 calendarFragment.java 类中,有一个名为 makeJsonObjectRequest 的函数,其中解析 StartDate ,我尝试解析 startTime StartTime 和 EndTime 和 EndDate 以将事件分别映射到日期,但这并没有多大作用。
String EndDate = jsonObject.getString("EndTime");
Date date = simpleDateFormat.parse(EndDate);
String title = jsonObject.getString("Title");
Log.d("EndDate ",""+date);
CalendarDay day = CalendarDay.from(date);
Event event = new Event(date,title);
cal = Calendar.getInstance();
cal.setTime(date);
int month = cal.get(Calendar.DAY_OF_THE_MONTH);
知道如何解决这个问题并更新代码,以便我可以在特定的时间范围内显示该月的某一天的事件(如上面的 Outlook 屏幕截图(第一个屏幕截图)所示),而不是整个事件月?(此外,json 类我 testjson.json 并包含在项目 Assets 文件夹中)
谢谢!
最佳答案
存储库中的示例使用月份过滤事件。您需要按日历日过滤事件并更新 onDateSelected
中的 ListView ,以便在用户选择不同日期时更新 ListView 。你应该得到这样的东西:
public class CalendarFragment extends Fragment implements OnDateSelectedListener {
private MaterialCalendarView calendarView;
private HashMap<CalendarDay,List<Event>> map = new HashMap<>();
private ListView listView;
private MyAdapter adapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.calendar, container, false);
listView = view.findViewById(R.id.listview);
adapter = new MyAdapter(getActivity(),new ArrayList<Event>());
listView.setAdapter(adapter);
calendarView = view.findViewById(R.id.calendarView);
calendarView.setDateTextAppearance(View.ACCESSIBILITY_LIVE_REGION_ASSERTIVE);
calendarView.setSelectedDate(LocalDate.now());
calendarView.setOnDateChangedListener(this);
makeJsonObjectRequest();
return view;
}
private void makeJsonObjectRequest() {
String response = loadJSONFromAsset();
try {
JSONArray jArray = new JSONArray(response);
for (int i = 0; i < jArray.length(); i++) {
JSONObject jsonObject = jArray.getJSONObject(i);
String StartDate = jsonObject.getString("StartDate");
LocalDate date = LocalDate.parse(StartDate, DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss",Locale.US));
String title = jsonObject.getString("Title");
Log.d("Date ",""+date);
CalendarDay day = CalendarDay.from(date);
Event event = new Event(date,title);
if(!map.containsKey(day))
{
List<Event> events = new ArrayList<>();
events.add(event);
map.put(day,events);
}else
{
List<Event> events = map.get(day);
events.add(event);
map.put(day,events);
}
}
} catch (Exception e) {
e.printStackTrace();
}
// after parsing
List<Event> event = map.get(CalendarDay.from(LocalDate.now()));
if(event!=null && event.size()>0) {
adapter.addItems(event);
}else {
adapter.clear();
}
//add small dots on event days
EventDecorator eventDecorator = new EventDecorator(Color.RED, map.keySet());
calendarView.addDecorator(eventDecorator);
}
public String loadJSONFromAsset() {
String json = null;
try {
InputStream is = getActivity().getAssets().open("testjson.json");
int size = is.available();
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
json = new String(buffer, "UTF-8");
} catch (IOException ex) {
ex.printStackTrace();
return null;
}
return json;
}
@Override
public void onDateSelected(@NonNull MaterialCalendarView widget, @NonNull CalendarDay date, boolean selected) {
calendarView.setHeaderTextAppearance(R.style.AppTheme);
List<Event> event = map.get(date);
if(event!=null && event.size()>0) {
adapter.addItems(event);
}else {
adapter.clear();
}
}
}
关于java - 如何在 MaterialCalendarView 中显示特定日期和时间的事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59591568/
我做了很多尝试来操纵那个东西。我想在每次点击日历中的某些数字时添加一个弹出窗口。 public class TabAgendaFragment extends Fragment { priva
我遇到了 MaterialCalendarView 的问题图书馆。一切都很好,直到我选择了装饰器的一天,因为装饰器的颜色与选择的颜色相同。 这是正常的点击: 以及问题: 装饰器代码: public c
我正在测试一个示例应用程序,我试图在其中显示特定日期的时间和日期。目前,即使事件是一天,它也只会绘制整个月。假设该 Activity 是在 1 月 5 日上午 9:30 到上午 10:30 之间,那么
我正在尝试使用收到的 JSON 响应更改日期的背景颜色。但是我遇到了一些困难。 这是我的代码: MainActivty.java public class MainActivity extends
我正在使用 Xamarin Android MaterialViewCalendar 月份标题在某些设备上消失了,所以我想手动设置它的颜色。 最佳答案 第一步: 在样式中添加自己的样式 1
是否有任何方法可以将超过 1 个 DotSpan 附加到 Android MaterialCalendarView 的日期?尽管我在我的 CalendarView 中添加了 2 个 DotSpan,但
我正在使用 MaterialCalendarView我的 Xamarin.Android 应用程序中的库,除了我无法向日历添加跨度装饰外,它在大多数情况下都运行良好。 Documentation an
我是一名优秀的程序员,十分优秀!