[英]how do i auto increment a value in firebase
我目前正在開發一個應用程序,該應用程序使用 firebase 存儲和 firebase 數據庫下載文件以存儲鏈接到存儲的 url。 fire base 數據庫樹看起來有點像這樣
應用 | 應用程序1 | 命名我的應用程序下載 1 url http://link to download about 關於該應用程序 您的應用程序下載圖像圖像 url 您的下載下載 = 0 | app2(同上數據)
我有自定義的基本適配器,它允許我添加圖像 url 和關於值。 當有人單擊我列表中的一個項目時,它會下載並安裝您選擇的應用程序,方法是獲取該項目的位置,然后使用 httpget 從數據庫中獲取 url。
id 喜歡的是當他們單擊該項目時,它會自動將子下載量增加 1,因此它充當下載計數器。
mrootRef = new Firebase("https://admob-app-id-3020090926.firebaseio.com/Apps");
mlv = (ListView) findViewById(R.id.lvFilmapps);
mrootRef.child("Filmapps").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
final String appname = dataSnapshot.child("name").getValue(String.class);
final String url = dataSnapshot.child("url").getValue(String.class);
final String apkname = dataSnapshot.child("apk").getValue(String.class);
final String about = dataSnapshot.child("about").getValue(String.class);
final String appimg = dataSnapshot.child("image").getValue(String.class);
FilmArray.add(appname);
urlList.add(url);
ApkList.add(apkname);
Aboutapp.add(about);
appImage.add(appimg);
//String[] convertion for the BaseAdpater
String[] arr = FilmArray.toArray(new String[FilmArray.size()]);
String[] arr1 = Aboutapp.toArray(new String[Aboutapp.size()]);
String[] arr2 = appImage.toArray(new String[appImage.size()]);
mlv.setAdapter(new dataListAdapter(arr,arr1,arr2));
new dataListAdapter(arr,arr1,arr2).notifyDataSetChanged();
mlv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
newnamestring = ApkList.get(i).toString();
apkNames = FilmArray.get(i).toString();
new DownloadFileFromURL().execute(urlList.get(i));
}
});
}
我想你可能想看看Transaction
。 如果reference
是您的FirebaseReference
指向要遞增的數字,您可以執行以下操作:
reference.runTransaction(new Transaction.Handler() {
@Override
public Transaction.Result doTransaction(MutableData mutableData) {
if (mutableData.getValue() == null) {
mutableData.setValue(1);
} else {
int count = mutableData.getValue(Integer.class);
mutableData.setValue(count + 1);
}
return Transaction.success(mutableData);
}
@Override
public void onComplete(DatabaseError databaseError, boolean success, DataSnapshot dataSnapshot) {
// Analyse databaseError for any error during increment
}
});
注意兩個Transaction
不能同時執行,所以你確定計數更新正確。 您可以在此處了解更多詳細信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.