gpt4 book ai didi

java - Android 如何使用 Caldroid Lib 中异步任务的数据填充日历

转载 作者:行者123 更新时间:2023-12-01 17:09:17 32 4
gpt4 key购买 nike

我正在使用 Caldroid Lib 在我的 Android 应用程序中创建自定义日历,我需要从我的 Web 服务器加载数据,我有一个填充 HashMap 的异步任务,然后我将该数据放入数组列表中,如下所示:

class Asistencia extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {

arraylist = new ArrayList<HashMap<String, String>>();
// Retrieve JSON Objects from the given URL address
jsonobject = JSONfunctions
.getJSONfromURL("http://www.gettford.net/comunidad/api/calendario.php?usuarioID="
+ usuarioID);
if (jsonobject != null && jsonobject.length() > 0) {
try {
// Locate the array name in JSON
jsonarray = jsonobject.getJSONArray("datos");

for (int i = 0; i < jsonarray.length(); i++) {
HashMap<String, String> map = new HashMap<String, String>();
jsonobject = jsonarray.getJSONObject(i);
// Retrive JSON Objects
map.put("title", jsonobject.getString("title"));
map.put("dtstart", jsonobject.getString("dtstart"));
map.put("dtend", jsonobject.getString("dtend"));
map.put("color", jsonobject.getString("color"));
arraylist.add(map);
}
} catch (JSONException e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
} else {
errores = "conexion";
}
return null;
}

@Override
protected void onPostExecute(Void args) {

}

}

现在,完成异步任务后,我需要在日历上设置事件并设置单元格的背景颜色。

我怎样才能做到这一点?

我认为也许可以在这里完成:

private void setCustomResourceForDates() {

new Asistencia().execute();

Calendar cal = Calendar.getInstance();

// Min date is last 7 days
cal.add(Calendar.DATE, -11);
Date redDate = cal.getTime();

// Max date is next 7 days
cal = Calendar.getInstance();
cal.add(Calendar.DATE, 2);
Log.e("fecha", "" + redDate);
Date orangeDate = cal.getTime();

if (caldroidFragment != null) {
caldroidFragment.setBackgroundResourceForDate(R.color.red,
redDate);
caldroidFragment.setBackgroundResourceForDate(
R.color.orange, orangeDate);
caldroidFragment
.setTextColorForDate(R.color.white, redDate);
caldroidFragment.setTextColorForDate(R.color.white,
orangeDate);
}
ArrayList<Date> disabledDates = new ArrayList<Date>();
for (int i = 4; i < 8; i++) {
cal = Calendar.getInstance();
cal.add(Calendar.DATE, i);
disabledDates.add(cal.getTime());
}

caldroidFragment.setDisableDates(disabledDates);
caldroidFragment.refreshView();
}

最佳答案

我自己回答,对于任何需要填充 caldroid 的人,您可以使用以下代码来完成:

protected void onPostExecute(ArrayList<HashMap<String, String>> args) {

for (i = 0; i < arraylist.size(); i++) {
Calendar cal = Calendar.getInstance();

HashMap<String, String> map = arraylist.get(i);

SimpleDateFormat simpleDateFormat = new SimpleDateFormat(
"yyyy-MM-dd", Locale.getDefault());
try {
Date orangeDate = simpleDateFormat
.parse(map.get("dtstart"));

// Max date is next 7 days
/*
* cal = Calendar.getInstance(); cal.add(Calendar.DATE, 2);
* Log.e("fecha", "" + redDate); Date orangeDate =
* cal.getTime();
*/
Log.e("fecha", "" + orangeDate);
String color = map.get("color");
if (caldroidFragment != null) {
if (color.equals("red")) {
caldroidFragment.setBackgroundResourceForDate(
R.color.red, orangeDate);
caldroidFragment.setTextColorForDate(R.color.white,
orangeDate);
}
if (color.equals("orange")) {
caldroidFragment.setBackgroundResourceForDate(
R.color.orange, orangeDate);
caldroidFragment.setTextColorForDate(R.color.white,
orangeDate);
}
}
ArrayList<Date> disabledDates = new ArrayList<Date>();

for (int i = 4; i < 8; i++) {
cal = Calendar.getInstance();
cal.add(Calendar.DATE, i);
disabledDates.add(cal.getTime());
}

caldroidFragment.setDisableDates(disabledDates);
caldroidFragment.refreshView();

} catch (ParseException e) { // Insert this block.
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

关于java - Android 如何使用 Caldroid Lib 中异步任务的数据填充日历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24376373/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com