Dou*_*oos 0 java android hashmap android-asynctask android-calendar
我正在使用Caldroid Lib在我的Android App中创建一个自定义日历,我需要从我的Web服务器加载数据,我有一个asynctask填充HashMap然后我把这些数据放在这样的arraylist中:
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) {
}
}
Run Code Online (Sandbox Code Playgroud)
现在做完asynctask之后,我需要在日历上设置事件并设置单元格的背景颜色.
我怎样才能实现这一目标?
我想也许可以在这里完成:
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();
}
Run Code Online (Sandbox Code Playgroud)
我回答自己,对于任何需要填充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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2784 次 |
| 最近记录: |