Я пытаюсь получить ответ JSON
от сервера, затем проанализировать его и добавить некоторые события даты в календарь плагина Material-Calendar-View
.
И это почти работает, но оформление даты в календаре добавлено не сразу, а после прокрутки просмотра страниц в календаре.
У меня есть идея, что я должен поместить весь свой код в другой поток, потому что есть исключение
Пропущено 31 кадр! Приложение может выполнять слишком много работы над своим основным потоком.
Но я не уверен, должен ли я, и если я должен, я не знаю, как сделать это правильно.
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
events = new ArrayList<>();
calendarView = (CalendarView) getView().findViewById(R.id.calendarView);
mRequestQueue = VolleySingleton.getInstance(getContext()).getRequestQueue();
JSONParse();
calendarView.setEvents(events);
}
private void JSONParse() {
String url = "https://api.myjson.com/bins/14htbv";
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
response -> {
try {
jsonArray = response.getJSONArray("info_stories");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject hit = jsonArray.getJSONObject(i);
String dateStr = hit.getString("date");
String text_main = hit.getString("text_main");
Date date = sdf.parse(dateStr);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
events.add(new EventDay(cal, R.drawable.ic_home));
}
} catch (JSONException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
}, error -> {
error.printStackTrace();
});
mRequestQueue.add(request);
}