在FirebaseUI中继承FirebaseListAdapter时,如何获取单击项目的obj键?
FirebaseListAdapter具有以下获取itemId的方法,但返回long.但我需要使用默认字符串格式的对象键.
public long getItemId(int i) {
return (long)this.mSnapshots.getItem(i).getKey().hashCode();
}
Run Code Online (Sandbox Code Playgroud) 从Firebase示例中获取,如果我有像这样的恐龙事实数据结构:
{
"lambeosaurus": {
"name": "lamby",
"work": "eat",
"dimensions": {
"height" : 2.1,
"length" : 12.5,
"weight": 5000
}
},
"stegosaurus": {
"name": "stego",
"work": "play",
"dimensions": {
"height" : 4,
"length" : 9,
"weight" : 2500
}
}
}
Run Code Online (Sandbox Code Playgroud)
如何在Android类中为Firebase表示此结构DataSnapshot.getValue(DinosaurFacts.class)?
name和work表示为字符串,但如何在类中表示"维度"集合?
另外如何从DataSnapshot高度和重量中获取数据值?
编辑 我可以通过快照获取循环的单个元素,但我试图找到如何在类结构中表示数据.
for(DataSnapshot child : dataSnapshot.getChildren()) {
Log.d("hz-key:", child.getKey().toString());
Log.d("hz-val:", child.getValue().toString());
}
Run Code Online (Sandbox Code Playgroud) 我试图使用UUID生成作为一个nonce用于Twitter反向身份验证.但显然UUID不是一个好选择.那么我怎样才能在每次删除所有非单词字符时生成一个唯一的随机字符串,注意它在使用后会从内存中释放出来.以下代码崩溃.
var uuid: CFUUIDRef = CFUUIDCreate(nil)
var nonce: CFStringRef = CFUUIDCreateString(nil, uuid)
CFRelease(uuid)
println("createdNonce:\(nonce)")
Run Code Online (Sandbox Code Playgroud)
编辑: 我在xcode6 beta2,我无法调试,xocde崩溃,任何机会它.好吧,CFRelease部分对我来说很糟糕.一旦我删除,它似乎工作正常,但我不知道这是否会造成内存泄漏.
至于为什么UUID可能不是用于nonce的好选择,似乎是因为UUID不是由真正的随机位组成,请参考这里的讨论:https://github.com/aws/aws-sdk-ios/issues/30
如何使用 Meteor 设计/编写一个高效的 REST API,并且该 API 也可以被移动应用程序使用?移动应用程序也可以利用流星响应式编程吗?
目前有如此多的编程选择,为不同的平台重复所有内容(代码、API)似乎很浪费,而不是拥有一个良好的实用解决方案。
从firebase示例中,我需要找出是否有任何年龄= 25的恐龙,可以按照以下方式完成.但是如果没有那个年龄的恐龙,我怎么能发现查询已经完成并且有0只年龄= 25的恐龙.因为我的Android UI依赖于此,继续下一步.
Firebase ref = new Firebase("https://dinosaur-facts.firebaseio.com/dinosaurs");
Query queryRef = ref.orderByChild("height").equalTo(25);
queryRef.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot snapshot, String previousChild) {
System.out.println(snapshot.getKey());
}
// ....
});
Run Code Online (Sandbox Code Playgroud)
编辑 提供的一些解决方案建议使用ValueEventListener.但问题是即使你使用valueEventListener,在上面的例子中,它仍然不起作用,因为有0行.onDataChange不会触发.
Firebase ref = new Firebase("https://dinosaur-facts.firebaseio.com/dinosaurs");
Query queryRef = ref.orderByChild("height").equalTo(25);
queryRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChanged(DataSnapshot snapshot) {
System.out.println(snapshot.getKey());
}
// ....
});
Run Code Online (Sandbox Code Playgroud)
回答
@Override
public void onDataChange(DataSnapshot snapshot) {
//DinosaurFacts facts = snapshot.getValue(DinosaurFacts.class);
//Log.d("hz-dino", facts.toString());
if(snapshot.getValue() != null)
{
Log.d("hz-dino", snapshot.getKey());
Log.d("hz-dino", String.valueOf(snapshot.getValue()));
}
else
{
Log.d("hz-dino", "there …Run Code Online (Sandbox Code Playgroud)