我正在尝试从服务器获取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);
}
答案 0 :(得分:0)
解决了问题
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);
}