我正在做一個Android應用程序。我已成功寫入Firebase,但是我從Firebase讀取ListView時遇到問題。如果任何人都可以幫助將數據讀迴應用程序到ListView中,如果我只有一個項目嘗試讀取它,如果我嘗試獲取應用程序失敗的所有三個項目,它將起作用。 我已經包含了數據庫的圖片以瞭解結構和我的代碼。如何將Firebase數據導入ListView?
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import com.firebase.client.DataSnapshot;
import com.firebase.client.Firebase;
import com.firebase.client.FirebaseError;
import com.firebase.client.ValueEventListener;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.FirebaseDatabase;
import java.util.ArrayList;
public class Admin_ViewEvent extends AppCompatActivity {
// private TextView textViewPersons;
private ListView mListView;
private ArrayList<String> mMeetings = new ArrayList<>();
private Firebase mRef;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_admin__view_event);
mRef = new Firebase("https://saica-sgb-77a4f.firebaseio.com/Meetings");
mListView = (ListView) findViewById(R.id.ListView);
//textViewPersons = (TextView) findViewById(R.id.textViewPersons);
final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mMeetings);
mListView.setAdapter(arrayAdapter);
mRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot)
{
for(DataSnapshot childSnapShot : dataSnapshot.getChildren()) {
String date = (String) childSnapShot.child("address").getValue();
String datetime = (String) childSnapShot.child("datetime").getValue();
String name = (String) childSnapShot.child("name").getValue();
mMeetings.add(date);
mMeetings.add(datetime);
mMeetings.add(name);
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
System.out.println("The read failed: " + firebaseError.getMessage());
}
});
}
}
代碼有什麼問題?我很快看到的唯一情況是,你無法在'onDataChange()'中調用'arrayAdapter.notifyDataSetChanged()'。我還建議使用'ChildEventListener',因爲這樣可以更細化地更新列表視圖,從而減少屏幕閃爍。 –
@FrankvanPuffelen嗨,我想要發生的是讓每個項目都在自己的列表中,因爲Firebase中的每個項目都成爲它自己的項目。例如,第一個鍵必須將3個項目分組並顯示。 –
聽起來像一個明確的用例。什麼對當前的代碼不起作用? –