Проблема с добавлением событий в календарь плагина Material-Calendar-View - PullRequest
0 голосов
/ 07 июня 2019

Я пытаюсь получить ответ 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);
    }

1 Ответ

0 голосов
/ 07 июня 2019

Это решило проблему)

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();
}
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));
                        calendarView.setEvents(events);
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                } catch (ParseException e) {
                    e.printStackTrace();
                }
            }, error -> {
                error.printStackTrace();
            });
    mRequestQueue.add(request);
}
...