- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我习惯在 Android 中使用 Loader 和 CursorAdapter。查看适用于 Android 的 Couchbase-Lite,我无法轻易地找到一种方法来填充 ListView,我认为这是一种内存友好的方式。
在此处查看其示例应用程序中的代码: https://github.com/couchbaselabs/GrocerySync-Android/blob/master/GrocerySync-Android/src/main/java/com/couchbase/grocerysync/MainActivity.java
protected void startCBLite() throws Exception {
manager = new Manager(getApplicationContext().getFilesDir(), Manager.DEFAULT_OPTIONS);
//install a view definition needed by the application
database = manager.getDatabase(DATABASE_NAME);
com.couchbase.lite.View viewItemsByDate = database.getView(String.format("%s/%s", designDocName, byDateViewName));
viewItemsByDate.setMap(new Mapper() {
@Override
public void map(Map<String, Object> document, Emitter emitter) {
Object createdAt = document.get("created_at");
if (createdAt != null) {
emitter.emit(createdAt.toString(), null);
}
}
}, "1.0");
startLiveQuery(viewItemsByDate);
startSync();
}
private void startSync() {
URL syncUrl;
try {
syncUrl = new URL(SYNC_URL);
} catch (MalformedURLException e) {
throw new RuntimeException(e);
}
Replication pullReplication = database.createPullReplication(syncUrl);
pullReplication.setContinuous(true);
Replication pushReplication = database.createPushReplication(syncUrl);
pushReplication.setContinuous(true);
pullReplication.start();
pushReplication.start();
pullReplication.addChangeListener(this);
pushReplication.addChangeListener(this);
}
private void startLiveQuery(com.couchbase.lite.View view) throws Exception {
final ProgressDialog progressDialog = showLoadingSpinner();
if (liveQuery == null) {
liveQuery = view.createQuery().toLiveQuery();
liveQuery.addChangeListener(new LiveQuery.ChangeListener() {
@Override
public void changed(LiveQuery.ChangeEvent event) {
displayRows(event.getRows());
runOnUiThread(new Runnable() {
@Override
public void run() {
progressDialog.dismiss();
}
});
}
});
liveQuery.start();
}
}
private void displayRows(QueryEnumerator queryEnumerator) {
final List<QueryRow> rows = getRowsFromQueryEnumerator(queryEnumerator);
runOnUiThread(new Runnable() {
@Override
public void run() {
itemListViewAdapter = new GrocerySyncListAdapter(
getApplicationContext(),
R.layout.grocery_list_item,
R.id.label,
rows
);
itemListView.setAdapter(itemListViewAdapter);
itemListView.setOnItemClickListener(MainActivity.this);
itemListView.setOnItemLongClickListener(MainActivity.this);
}
});
}
private List<QueryRow> getRowsFromQueryEnumerator(QueryEnumerator queryEnumerator) {
List<QueryRow> rows = new ArrayList<QueryRow>();
for (Iterator<QueryRow> it = queryEnumerator; it.hasNext();) {
QueryRow row = it.next();
rows.add(row);
}
return rows;
}
@Override
public View getView(int position, View itemView, ViewGroup parent) {
...
QueryRow row = list.get(position);
Document document = row.getDocument();
...
}
查询返回一个枚举器,然后循环创建 ArrayList,然后将其传递给查询适配器。这都是在 UI 线程上完成的。
对于一个简单的杂货店应用程序演示来说,这可能没问题,但是如果我的数据库中有 20,000 个文档,并且有 18,000 个返回响应我的查询呢?
最佳答案
查看 TodoLite Android 示例项目。在那里检查 TaskAdapter。通过直接在 BaseAdapter 中使用 queryEnumertor 来处理这种情况下面是包含 TaskAdapter 类的 MainActivity 的链接
关于android - Couchbase Lite Android - 以内存友好的方式填充 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22210602/
因为谷歌发布了几篇关于移动设备联邦学习的论文,比如Gboard,但是我在TFLite网站上找不到关于训练的文档,TFLite现在支持设备训练吗? 最佳答案 我们不支持在 TensorFlow Lite
我正在尝试创建一个饼图,其中弧按大小(顺时针)排序,但不知道如何排序。 看来“theta”中的“sort”参数指向“color”的默认顺序,例如: { "$schema": "https://ve
就像这个: https://www.r-graph-gallery.com/265-grouped-boxplot-with-ggplot2/ 我尝试了刻面、颜色 channel 和构图, 但结果并不
我试图在折线图中显示一些数据。但是,我的“Harvest_Year”数据(以年为单位的日期,如 2017 年或 2018 年)显示为我认为是一个字符串 我从 .csv 文件导入数据,以下是我将字符串更
VegaLite 自动分配颜色。金价是蓝色,银价是橙色,感觉不对。 如何指定显式颜色 - #F1C40F黄金和 #95A5A6为了银? 我也想保留data.values如下面的示例代码 - 作为一组单
我正在 Vega-Lite(使用 Altair 生成)中绘制条形图。使用 Vega-View API,我编写了一些代码,用户可以在其中选择条形,这会更改这些条形的颜色(以及在应用程序的其他地方做一些其
我想注册一个自定义 Multi-Hue Sequential Color Scheme在织女星精简版。 我对文档的阅读是我只能创建 config.range对象来设置自定义色阶,但无法公开插值函数,从
最近几天我一直在尝试重命名我的 vega-lite 图表上的图例标签。 通常,这些标签与其各自的数据字段名称匹配。我有一个案例,我想给它们一个更具描述性的名称,但不重命名原始数据名称。 一个简化的例子
如何在 VegaLite 中使用数组数据? 我想将数据用作数组 dates = [1, 2, 3] prices1 = [1, 2, 1] prices2 = [1.5, 1, 2] 代替 Veg
我有一个非常简单的情况,我相信我的解决方案太复杂了,很有可能我遗漏了一些东西。说我有 time 的措施,位置(x,y,z),角度(滚动,俯仰,偏航)和速度。我想要一个简单的可视化,就像我目前拥有的那样
我似乎无法通过阅读文档来弄清楚这一点。 有没有办法实现 onClick我的任何标记的事件处理程序? 最佳答案 由于 Vega-Lite 尚不支持信号,您可以修补生成的 Vega。您可以向已编译的 Ve
我正在尝试制作一个简单的堆积条形图,仅在 X 轴上。我让它工作,有两个值 50 和 250。所以 X 轴的最大值显示为 300。 如何将其强制为另一个值,例如 500?那么从最后一个值到轴的末端是否存
我可以设置字体吗?在 vega-lite's config object , 用于所有标签和标题? 我目前为 x&y 轴和颜色图例设置了 labelFont 和 titleFont,但它在任何地方都是
在 Vega Lite 中,我试图将我的图例与这张图表的中间对齐。我需要图例的 anchor 参数,但我只能找到 titleAnchor。 Chart with Legend "legend": {
我可以设置字体吗?在 vega-lite's config object , 用于所有标签和标题? 我目前为 x&y 轴和颜色图例设置了 labelFont 和 titleFont,但它在任何地方都是
在 Vega Lite 中,我试图将我的图例与这张图表的中间对齐。我需要图例的 anchor 参数,但我只能找到 titleAnchor。 Chart with Legend "legend": {
我直接从 getmdl.io(组件页面)和所有设备(多台 PC、浏览器、手机等)复制代码,汉堡菜单不在标题中居中。我似乎无法隔离 css 中的菜单图标来重新对齐它。 getmdl.io 上的所有组件代
我正在使用 vega-lite 将一些数据渲染到 map 上。目前,我有这个架构,它呈现附加的图像: { "title": "What's the nearest city to you?",
我正在使用 Angular 4 构建一个 Web 应用程序。对于设计,我使用的是 Material Design lite。但是,我想使用 MDL 实现一个交互式轮播,它给我流畅的外观和感觉,并且与我
它看起来像 Polymer Starter Kit包含比 Material Design Lite 更多的组件,并且现在可用。由于两者都是符合 Material Design 理念的 Google 项
我是一名优秀的程序员,十分优秀!