使用任务
使用一个ToDoList类的实例来存储任务或计划项的列表. 为每个任务创建一个或多个ToDo对象来存储数据,例如主题(summary),优先级,持续的时间以及状态.
打开一个任务列表
调用PIM.openPIMList(),将列表的类型作为open (PIM.TODO_LIST)的参数
,并且指定访问的模式(READ_WRITE, READ_ONLY,或WRITE_ONLY)打开列表.
|
ToDoList todoList = null;
try {
todoList = (ToDoList)PIM.getInstance().openPIMList(PIM.TODO_LIST, PIM.READ_WRITE);
}
catch (PimException e) {
//an error occurred
return;
}
|
创建一个任务
调用任务列表上的createToDo().
|
ToDo task = todoList.createToDo();
toSerialFormat().
|
<!--[if !vml]--><!--[endif]-->
注:新增加的任务不会存到数据库,直到你提交它.为获得更多信息,参看35页的”保存一个任务”.
增加任务信息
ToDo类定义字段来存储数据,例如SUMMARY,PRIORITY以及DUE.每个字段都有一个特定的数据类型,你可以使用PIMList.getFieldDataType(int)调用它们.因为取决于字段的数据类型,调用以下方法设置数据:
addString(), addDate(), addInt(), addBoolean(), 或 addBinary().
为获得更多关于字段的信息,参看25页的”PIM API”.
在你设置或获取一个字段之前, 调用isSupportedField(int)来验证此项是否支持字段.
|
if (todoList.isSupportedField(ToDo.SUMMARY)) {
task.addString(ToDo.SUMMARY, ToDo.ATTR_NONE, "Create project plan");
}
if (todoList.isSupportedField(ToDo.DUE)) {
Date date = new Date();
task.addDate(ToDo.DUE, ToDo.ATTR_NONE, (date + 17280000));
}
if (todoList.isSupportedField(ToDo.NOTE)) {
task.addString(ToDo.NOTE, ToDo.ATTR_NONE, "Required for meeting");
}
if (todoList.isSupportedField(ToDo.PRIORITY)) {
task.addInt(Todo.PRIORITY, ToDo.ATTR_NONE, 2);
}
|
设置任务状态
使用PIM扩展字段ToDo.EXTENDED_FIELD_MIN_VALUE + 9.
|
常量
|
值
|
|
STATUS_NOT_STARTED
|
1
|
|
STATUS_IN_PROGRESS
|
2
|
|
STATUS_COMPLETED
|
3
|
|
STATUS_WAITING
|
4
|
|
STATUS_DEFERRED
|
5
|
|
task.addInt(ToDo.EXTENDED_FIELD_MIN_VALUE + 9, ToDo.ATTR_NONE, 2);
|
修改任务信息
为了用一个新值替换一个存在的值,调用合适的set方法,例如setString().为了判断一个字段已经设置其值,调用countValues().
注:如果你调用一个增加方法,例如addString(),当一个值存在时,将抛出一个FieldFullException异常.使用相应的set方法,如setString()改变一个存在的值.
|
if (task.countValues(ToDo.SUMMARY) > 0) {
task.setString(ToDo.SUMMARY, 0, ToDo.ATTR_NONE, "Review notes");
}
|
保存一个任务
调用commit()方法.在你保存之前,为了决定自从上一次保存任务之后任何字段是否发生变化,调用isModified().
|
if(task.isModified())
{
task.commit();
}
|
获取任务信息
获取一个迭代
调用任务列表上的PIMList.items().
|
ToDoList todoList = (ToDoList)PIM.getInstance().openToDoList(
PIM.TODO_LIST, PIM.READ_ONLY);
Enumeration enum = todoList.items();
|
获取一个任务的字段ID以及值
对于某个特定的ToDo项,为获取一组包含其数据的字段ID,调用PIMItem.getFields().
为获取字段值,调用PIMItem.getString().
|
while (enum.hasMoreElements()) {
ToDo task = (ToDo)enum.nextElement();
}
int[] fieldIds = task.getFields();
int id;
for(int index = 0; index < fieldIds.length; ++index) {
id = fieldIds[index];
if(task.getPIMList().getFieldDataType(id) == STRING) {
for(int j=0; j < task.countValues(id); ++j) {
String value = task.getString(id, j);
System.out.println(task.getFieldLable(id) + "=" + value);
}
}
}
|
将一个任务转化为序列化格式
为了导入或导出PIM项数据,使用一个输出写入流将BlackBerry设备中的任务导出为一个支持的序列化格式,例如vCard.
为了获取一个支持的格式的字符串数组,调用PIM.supportedSerialFormats(),并指定列表类型(PIM.TODO_LIST).
注:当写到一个输出流时enc参数指定了字符编码格式.支持的字符编码格式包括"UTF8," "ISO-8859-1," 和 "UTF-16BE."此参数不能为空.
|
ToDoList todoList = (ToDoList)PIM.getInstance().openPIMList(
PIM.TODO_LIST, PIM.READ_ONLY);
ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
String[] dataFormats = PIM.getInstance().supportedSerialFormats(PIM.TODO_LIST);
Enumeration e = todoList.items();
while (e.hasMoreElements()) {
ToDo task = (ToDo)e.nextElement();
PIM.getInstance().toSerialFormat(task, byteStream, "UTF8", dataFormats[0]);
}
|
导入一个任务
为返回一组PIMItem对象,调用fromSerialFormat().
使用PIM项创建一个新的任务,调用ToDoList.importToDo().
注:当写到一个输出流时enc参数指定了字符编码格式.支持的字符编码格式包括"UTF8," "ISO-8859-1," 和 "UTF-16BE."此参数不能为空.
|
String[] dataFormats = PIM.toDoSerialFormats();
// Write task to serial format.
ByteArrayOutputStream os = new ByteArrayOutputStream();
PIM.getInstance().toSerialFormat(task, os, "UTF8", dataFormats[0]);
// Import task from serial format.
ByteArrayInputStream is = new ByteArrayInputStream(outputStream.toByteArray());
PIMItem[] pi = PIM.getInstance().fromSerialFormat(is, "UTF8");
ToDoList todoList = (ToDoList)PIM.getInstance().openPIMList(
PIM.TODO_LIST, PIM.READ_WRITE);
ToDo task2 = todoList.importToDo((ToDo)pi[0]);
|
提示: importToDo()方法保存一个任务,因此你不必要调用commit()方法.
删除一个任务
调用任务列表上的removeToDo().
|
todoList.removeToDo(task);
|
关闭一个任务列表
调用todoList.close().务必捕捉应用的异常:
|
try {
todoList.close();
}
catch (PimException e) {
// Handle exception.
}
|