2017-10-29 94 views
1

我正在爲Android的社交應用程序 我試圖從Firebase中檢索數據並顯示(至少15項) 問題是我的代碼只顯示第一個項目 這是我的代碼如何填充與多個Firebase項目的列表視圖

FirebaseHelper

public class FirebaseHelper { 
DatabaseReference db; 
ArrayList<Questions> questionEntries =new ArrayList<>(); 
public FirebaseHelper(DatabaseReference db) { 
    this.db=db; 
    } 

private void fetchData (DataSnapshot dataSnapshot){ 
questionEntries.clear(); 
    Questions questions = dataSnapshot.getValue(Questions.class); 
    questionEntries.add(questions);} 


public ArrayList<Questions> retreive(){ 
db.addChildEventListener(new ChildEventListener() { 
    @Override 
    public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
     fetchData(dataSnapshot); 
    } 

    @Override 
    public void onChildChanged(DataSnapshot dataSnapshot, String s) { 
     fetchData(dataSnapshot); 
    } 

    @Override 
    public void onChildRemoved(DataSnapshot dataSnapshot) { 

    } 

    @Override 
    public void onChildMoved(DataSnapshot dataSnapshot, String s) { 

    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 

    } 
}); 
return questionEntries; 
} 

這是我的活動,其中顯示的列表

public class Actu extends Fragment { 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup 
container, @Nullable Bundle savedInstanceState) { 
    v = inflater.inflate(R.layout.activity_actu, container, false); 
    lv = (ListView) v.findViewById(R.id.actu_rv); 
    db = FirebaseDatabase.getInstance().getReference("Questions"); 

    helper = new FirebaseHelper(db); 
    adapter = new QuestionAdapter(getContext(),helper.retreive()); 
    lv.setAdapter(adapter); 


    return v;  } 
} 

This my firebase database structure

回答

1

這裏是你可以做什麼:

public ArrayList<Questions> retreive(){ 
db.addChildEventListener(new ChildEventListener() { 
@Override 
public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
    Questions questions = dataSnapshot.getValue(Questions.class); 
    questionEntries.add(questions); 

} 

@Override 
public void onChildChanged(DataSnapshot dataSnapshot, String s) { 

} 

@Override 
public void onChildRemoved(DataSnapshot dataSnapshot) { 

} 

@Override 
public void onChildMoved(DataSnapshot dataSnapshot, String s) { 

} 

@Override 
public void onCancelled(DatabaseError databaseError) { 

裏面的onChildAdded()方法可以檢索兒童的數據。

在你Question-KxOmo9FQ7QZMtq2wUIT數據庫,刪除從那裏Question,只是保持id那裏,這就像在SQL數據庫id主鍵,所以你不需要Question這裏..

所以刪除方法fetchdata()

+0

我應該再次把setText函數嗎? – user8773560

+0

@ user8773560什麼'setText',如果它的列表視圖然後沒有不使用setText ..我更新了答案,現在應該工作 –

+0

我做到了,但它不起作用。結果仍然相同(我只得到一個元素) – user8773560