0
我试图开发一个使用firebase作为我的数据库的停车移动应用程序。取决于孩子的价值,以其他孩子的价值在火炉堡
这里是我的代码示例,
public long freeSlots;
public String fp1status;
//Firebase database connection declaration
fbase= new Firebase("https://justpark-acdb7.firebaseio.com/Firstfloor/");
final Firebase fbaseFreeSlots=fbase.child("freeSlots");
Firebase firebaseparking1=fbase.child("fparking1");
//I get the freeSlots value everytime it changes and set my long freeSlots into it
fbaseFreeSlots.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
freeSlots = dataSnapshot.getValue(Long.class);
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
//everytime a parking slot gets freed or occupied, i set my freeSlots child, into either +1 or -1 depending on the action of the user.
firebaseparking1.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
fp1status = dataSnapshot.getValue(String.class);
if (fp1status.equals("Occupied")) {
Fragment fp1;
fp1 = new occupiedFragment();
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.fparking1, fp1);
ft.commit();
if(freeSlots>0) {
freeSlots = freeSlots - 1;
fbaseFreeSlots.setValue(freeSlots);
}
} else if (fp1status.equals("Free")) {
Fragment fp1;
fp1 = new freeFragment();
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.fparking1, fp1);
ft.commit();
if(freeSlots<28) {
freeSlots = freeSlots + 1;
fbaseFreeSlots.setValue(freeSlots);
}
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
这是工作,但数值似乎搞乱了,我有firebaseparking(可达28),这一切看起来是一样的,所以我不会上传它以避免长码。我的代码有什么问题吗?或者是否可以将儿童的数据(freeSlots)依赖于其他孩子?(每个停车位)在火力基地?
我有不同的片段,依赖于数据库中的每个fparkingX节点,所以我订阅了他们一个一个。感谢您的回复!如果可以的话,你能证明通过孩子的迭代吗?如果你可以提供一个样品,会非常感激。再次感谢! – Miho
就我个人而言,我认为碎片不是去这里的路。 RecyclerView会给你更好的性能和内存使用。 'FirebaseRecyclerAdapter'使设置变得非常简单。无论如何,我会在稍后添加一个例子。 – vzsg