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