Android 上的 Couchbase lite,检索浏览量
Couchbase lite on Android, retrieve views
这个问题是关于 Couchbase lite(没有同步网关)的。
我是 Couchbase 的新手,我设法使用了 demo app,但我并不完全理解它。
它包含这段代码(据我所知,因为我不是以英语为母语的人)检索视图以使用索引填充列表视图:
// This code can be found in ListsActivity.java
// in the setupViewAndQuery() method
com.couchbase.lite.View listsView = mDatabase.getView("list/listsByName");
if (listsView.getMap() == null) {
listsView.setMap(new Mapper() {
@Override
public void map(Map<String, Object> document, Emitter emitter) {
String type = (String) document.get("type");
if ("task-list".equals(type)) {
emitter.emit(document.get("name"), null);
}
}
}, "1.0");
}
listsLiveQuery = listsView.createQuery().toLiveQuery();
谁能帮我了解一下每个部分在做什么?
在哪一步填充列表视图
我可以在代码(第 3 行)中更改 "list/listsByName" 吗?会发生什么?
我可以发射不止一种元素吗?
代码有点绕。让我们先回答简单的部分。
Can I change "list/listsByName" in the code (line 3)?
是的。这只是 Couchbase 视图的名称。您选择视图名称。不幸的是,Couchbase 和 Android 中使用的术语有些重叠。 Couchbase 视图是数据库的一种静态索引。
Can I emit more than one element?
是的。你几乎可以发出任何你想要的东西。查看文档 here
现在,跟踪 Android ListView 是如何更新的:
在 ListsActivity.java
中注意 onCreate 方法中 ListAdapter
实例被添加到 ListView
。这个 ListAdapter
是一个扩展 LiveQueryAdapter
的私有内部 class。
LiveQueryAdapter
在 utils
子包中。如果您查看它的构造函数,您会看到它向传入的查询添加了一个更改侦听器。触发时,此更改侦听器将枚举器设置为等于实时查询传回的行,然后调用 notifyDataSetChanged
到告诉列表刷新自己。反过来,这会导致 ListAdapter
中的 getView
被调用。这是从数据库中提取数据并用于填充列表条目的地方。
这个问题是关于 Couchbase lite(没有同步网关)的。
我是 Couchbase 的新手,我设法使用了 demo app,但我并不完全理解它。 它包含这段代码(据我所知,因为我不是以英语为母语的人)检索视图以使用索引填充列表视图:
// This code can be found in ListsActivity.java
// in the setupViewAndQuery() method
com.couchbase.lite.View listsView = mDatabase.getView("list/listsByName");
if (listsView.getMap() == null) {
listsView.setMap(new Mapper() {
@Override
public void map(Map<String, Object> document, Emitter emitter) {
String type = (String) document.get("type");
if ("task-list".equals(type)) {
emitter.emit(document.get("name"), null);
}
}
}, "1.0");
}
listsLiveQuery = listsView.createQuery().toLiveQuery();
谁能帮我了解一下每个部分在做什么?
在哪一步填充列表视图
我可以在代码(第 3 行)中更改 "list/listsByName" 吗?会发生什么?
我可以发射不止一种元素吗?
代码有点绕。让我们先回答简单的部分。
Can I change "list/listsByName" in the code (line 3)?
是的。这只是 Couchbase 视图的名称。您选择视图名称。不幸的是,Couchbase 和 Android 中使用的术语有些重叠。 Couchbase 视图是数据库的一种静态索引。
Can I emit more than one element?
是的。你几乎可以发出任何你想要的东西。查看文档 here
现在,跟踪 Android ListView 是如何更新的:
在 ListsActivity.java
中注意 onCreate 方法中 ListAdapter
实例被添加到 ListView
。这个 ListAdapter
是一个扩展 LiveQueryAdapter
的私有内部 class。
LiveQueryAdapter
在 utils
子包中。如果您查看它的构造函数,您会看到它向传入的查询添加了一个更改侦听器。触发时,此更改侦听器将枚举器设置为等于实时查询传回的行,然后调用 notifyDataSetChanged
到告诉列表刷新自己。反过来,这会导致 ListAdapter
中的 getView
被调用。这是从数据库中提取数据并用于填充列表条目的地方。