小编Mat*_*son的帖子

Firebase child_added只会添加子项

来自Firebase API:

已添加子项:此事件将针对此位置的每个初始子项触发一次,并且每次添加新子项时都会再次触发该事件.

一些代码:

listRef.on('child_added', function(childSnapshot, prevChildName) {
    // do something with the child
});
Run Code Online (Sandbox Code Playgroud)

但是因为在这个位置每个孩子调用了一次函数,有没有办法只获得实际添加的孩子?

firebase

52
推荐指数
3
解决办法
4万
查看次数

使用Firebase的数据库样式查询

有没有一种快速的方法来使用Firebase执行数据库样式的查询?

例如:

给定一个火力点参考users与领域user_id,name以及age什么是做类似这样的查询的最佳方式:

SELECT name FROM users WHERE `user_id`=147;
Run Code Online (Sandbox Code Playgroud)

SELECT COUNT(*) FROM users WHERE age=21;
Run Code Online (Sandbox Code Playgroud)

javascript firebase

46
推荐指数
2
解决办法
2万
查看次数

Java API源代码

我在哪里可以找到Java API的源代码?

java api

24
推荐指数
2
解决办法
2万
查看次数

材料设计"令人愉快的细节"实施

任何人都可以提供一个如何从Material Design"Delightful Details"页面实现播放 - 停止 - 暂停动画的示例吗?

http://www.google.com/design/spec/animation/delightful-details.html

奇怪的是,动画甚至没有在Google音乐应用中使用...

android android-animation material-design

13
推荐指数
0
解决办法
812
查看次数

处理函数中的异步调用(Firebase)

好几次,我遇到了使用Firebase的同步和异步功能的问题.我的问题通常是我需要在我编写的函数中进行异步Firebase调用.举个简单的例子,假设我需要计算和显示一个对象的速度,我的Firebase存储距离和时间:

function calcVelocity() {
    var distance, time, velocity;

    firebaseRef.once('value', function(snapshot) {
        distance = snapshot.val().distance;
        time = snapshot.val().time;

        velocity = distance / time;
    });
    return velocity;
}

$("#velocity").html(calcVelocity());
Run Code Online (Sandbox Code Playgroud)

当然,上面的代码不起作用,因为firebaseRef.once()是异步调用,所以velocity当我们到达时还没有设置return velocity;.如果我们将回调函数置于return内部.on(),则根本不会返回任何内容.

一种解决方案是使我的calcVelocity()函数也异步.

另一种解决方案是存储同步读取但从Firebase异步更新的Firebase缓存版本.

这些解决方案中的一个比另一个好吗?还有更好的解决方案吗?

javascript ajax asynchronous firebase

10
推荐指数
3
解决办法
1万
查看次数

基于云的Android开发

任何人都可以为Android开发推荐一个好的基于云的IDE吗?

我在我的桌面上使用Eclipse/ADT,在我的Android设备上使用AIDE,但同步两者是一件麻烦事.

如果没有可用的,有人会建议使用AIDE的高级功能在GIT上托管我的应用程序吗?

ide cloud android aide-ide

9
推荐指数
1
解决办法
8910
查看次数

Android备份API

任何人都可以解释Android备份API 究竟用于什么?

我已阅读使用 Developer Docs中的备份API数据备份,但我仍不清楚.

何时备份和恢复数据?

特别是在这些情况下:

  1. 用户在设备1上安装我的应用程序,备份数据,然后用户在设备2上安装我的应用程序.设备1中的用户数据是否自动放在设备2上?如果是这样,安装应用程序或启动应用程序时是否会发生这种情况?

  2. 我的应用程序安装在2台设备上.在设备1上进行更改时,是否在设备2上自动进行了更改?如果没有,是否至少可以在设备2上进行更改?

它说,在一份文件中

备份服务不是用于将应用程序数据与其他客户端同步或保存您在正常应用程序生命周期中要访问的数据.您无法按需读取或写入备份数据,除了通过备份管理器提供的API之外,无法以任何方式访问备份数据.

但在另一个,

Android框架可帮助您构建富云应用程序,将其数据同步到远程Web服务,确保您的所有设备始终保持同步

这似乎与我相矛盾.

更具体地说,我希望跨设备不断同步单个数据库文件(小于20 KB).这可以通过Backup API实现吗?

cloud android sync

8
推荐指数
1
解决办法
2158
查看次数

在Android中解析圣经的最佳方法

我正在创建一个需要访问圣经的Android应用程序.我希望它离线,所以我不想使用其中一个互联网API.看完这个这个帖子,我决定在本地存储文本作为XML,像这样

<bible>
<b n="Genesis">
<c n="1">
<v n="1">In the beginning, God created the heavens and the earth.</v>
Run Code Online (Sandbox Code Playgroud)

我的问题是该文件大约有34,000行(4.4 MB),并且需要很长的时间(几分钟)才能解析整个文本.

现在我正在使用XmlPullParser,就像这样

XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser xpp = factory.newPullParser();

InputStream iStream = getResources().openRawResource(R.raw.bible);
BufferedReader reader = new BufferedReader(new InputStreamReader(iStream));
xpp.setInput(reader);

int eventType = xpp.getEventType();

while (eventType != XmlPullParser.END_DOCUMENT)
{
    // do something here
    eventType = xpp.next();
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法在Android上本地存储和/或访问圣经?

我已经考虑将它存储为多个XML文件来更快地解析它(每本书的一个单独的文件)但是如果可能的话也不愿意.

我对任何建议持开放态度,包括将文本存储为XML之外的其他内容.

谢谢

java xml android xml-parsing

7
推荐指数
2
解决办法
3535
查看次数

在 Kotlin 中求两个集合之间的对称差

是否有 Kotlin stdlib 函数可以查找两个集合之间的对称差异?因此,给定两个集合[1, 2, 3][1, 3, 5]对称差为[2, 5]

我已经编写了这个扩展函数,它运行良好,但感觉像是集合框架中应该已经存在的操作。

fun <T> Set<T>.symmetricDifference(other: Set<T>): Set<T> {
    val mine = this subtract other
    val theirs = other subtract this
    return mine union theirs
}
Run Code Online (Sandbox Code Playgroud)

编辑:在java中获得两个集合之间的对称差异的最佳方法是什么?建议 Guava 或 ApacheCommons,但我想知道 Kotlin 的 stdlib 是否支持这一点。

collections set kotlin

7
推荐指数
1
解决办法
3043
查看次数

大胆的ClickableSpan触摸

我有一个TextView,其中每个单词都是ClickableSpan(实际上是ClickableSpan的自定义子类).触摸单词时,应以粗体字体显示.如果我在TextView上设置textIsSelectable(false),它就可以正常工作.这个词立即加粗.但是如果文本是可选择的,那么它就不起作用.但是 - 如果我触摸一个单词,然后关闭屏幕并重新打开,当屏幕显示重新出现时,该单词将以粗体显示.我已经尝试了所有我能想到的强制重绘(使TextView无效,强制调用Activity的onRestart(),在TextView上调用refreshDrawableState()等).我错过了什么?

这是我的ClickableSpan的子类:

public class WordSpan extends ClickableSpan
{
    int id;
    private boolean marking = false;
    TextPaint tp;
    Typeface font;
    int color = Color.BLACK;

    public WordSpan(int id, Typeface font, boolean marked) {
        this.id = id;
        marking = marked;
        this.font = font;
    }

    @Override
    public void updateDrawState(TextPaint ds) {
        ds.setColor(color);
        ds.setUnderlineText(false);

        if (marking)
            ds.setTypeface(Typeface.create(font,Typeface.BOLD));

        tp = ds;
    }

    @Override
    public void onClick(View v) {
        // Empty here -- overriden in activity
    }

    public void setMarking(boolean m) {
        marking …
Run Code Online (Sandbox Code Playgroud)

android linkmovementmethod clickablespan

6
推荐指数
1
解决办法
382
查看次数