public ArrayList<String> arr;
public ArrayAdapter adapter;
@Override
protected void onStart() {
super.onStart();
DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference();
arr = new ArrayList<>();
ValueEventListener listener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
map2list((Map) dataSnapshot.getValue());
//formats the datasnapshot entries to strings
adapter.notifyDataSetChanged();
//makes the ListView realtime
}
@Override
public void onCancelled(DatabaseError databaseError) {
// Getting Post failed, log a message
System.out.println(databaseError.toException());
// ...
}
};
mDatabase.addValueEventListener(listener);
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, android.R.id.text1, arr);
ListView listView = (ListView) findViewById(R.id.yourOwnListView);
listView.setAdapter(adapter);
}
public void map2list(Map<String,Long> map){
arr.clear();
for (Map.Entry<String, Long> entry : map.entrySet()) {
Long key = Long.parseLong(entry.getKey());
String d = DateFormat.getDateTimeInstance().format(key);
Long value = entry.getValue();
arr.add(d + ": " + value);
}
}
私自身のデータベースでこれをテストしています。
map2list()は、リストビューのデータを簡単にフォーマットするための方法です。これを行う最善の方法は、カスタム配列アダプターまたはbaseadapterを使用することですが、この例で必要とするより多くのコードが必要です。
同時に2つのログが作成された場合、衝突する可能性があるため、キーを時間として保持することはお勧めできません。
最後に、firebaseはints以上のLongsを使用するので、少ないコードでLongsを使用しました
まだ試しましたか?関連するコードスニペットを共有します。 –
sry、それ以降の質問のために覚えておきます。ありがとう! –