解决方案 »
- 新手关于baseadapter
- Ubuntu(64bit)如何安装arm-eabi-gcc v4.43安装包
- 升级ADT 20 后的几个问题(新手请教)
- 求解答啊,刚升级到4.1ADT出现问题,高手来帮帮小弟啊
- ActivityGroup中调用子Activity的finish方法退出程序的问题
- Android模拟器 如何建立SD卡?
- myeclipse8.5安装adt
- 想做一个更换手机主题的程序,比较没思路,有会的给个提示。或者讨论下吧。。
- android 程序使用jquery 日期控件选中日期时间时系统崩了
- Android触摸事件传递流程
- 怎么实现一个可以左右循环滑动的ViewGroup?
- android引入jar包导致的classnotfound问题
在Kii Cloud中,有文件存储和单条目的object存储。我们记事本应用,使用的是object存储方式。Object存储方式支持key/value对的存储,我们可以把每条记事条目存为一个object,分别记入title和content域。
对于数据存储,我们首先要理解一个Bucket的概念。Bucket在这里是一些条目或者文件的集合区域。比如,我们的应用将来除了笔记,还有一些日历事项存储,那么我们虽然可以和笔记混着存储在一起,用一个专门的位来标记类型,当然还可以采用不同的bucket来存储在不同区域,互不干扰。
在Kii Cloud中,bucket可以属于应用,或者属于一个用户组,或单独属于一个用户。比如游戏分数,我们想做排行,那么每个用户的分数要存储在应用的bucket中,这样这些数据才可以所有用户都能访问,才好排序。但如当前这个例子,笔记条目属于个人,更适合于存储在用户自己的bucket空间中。
六、 笔记列表界面的实现和逻辑
如上篇文章讨论的,我们的列表界面是程序的入口界面,在程序启动时检查是否已经登录,这里是检查是否有token的存储。如果没有,就关闭当前页面,打开登录界面。如果有token,则用token获取KiiUser实例,然后取用户bucket的所有KiiObject。
KiiQuery all_query = new KiiQuery();
KiiQueryResult result = kUser.bucket("notes").query(all_query);
objLists = result.getResult();
for (KiiObject obj : objLists) {
Note n = new Note();
n.title = obj.getString("title");
n.content = obj.getString("content");
n.uri = obj.toUri();
//将Note添加进显示的list列表
…
}
实际上,通过KiiQuery,我们可以扩展出搜索功能,这个就留待读者自己去发掘了
七、 编辑保存的逻辑实现
新建一个Note条目,也就是在Kii Cloud上创建一个新的对象,可以用 NotesList.kUser.bucket(“notes”).object()。 那么,又如何修改一个已经存在的对象呢?我们是用Uri的方式来获得一个对象的引用。在列表中,我们列出了所有远端的条目,通过toUri来获得该对象的uri地址。在编辑界面,我们就可以用KiiObject.createByUri(uri) 来重新获得这个对象。在调用保存save()方法后,将内容或者说更改保存到服务器。
那么我们的笔记的标题和正文如何存储呢?如前面所说,Kii Cloud的Object存储是以JSON的key-value方式存储。所以我们可以用obj.set(key, value)来存储或更新条目。
要小心,查询列表和保存都是一个连接服务器的过程,并且是同步方法,所以我们需要一个ASyncTask来包装它。