如何将数据从 firebase 检索到 ListView?
Posted
技术标签:
【中文标题】如何将数据从 firebase 检索到 ListView?【英文标题】:How to retrieve the data from firebase into a ListView? 【发布时间】:2016-12-18 01:19:36 【问题描述】:我看到了这段代码,但它在 TextView 中检索数据,但我希望将其设置在 ListView 中。 我该怎么做? 这是我试过的代码:
ref.addValueEventListener(new ValueEventListener()
@Override
public void onDataChange(DataSnapshot snapshot)
for (DataSnapshot postSnapshot : snapshot.getChildren())
//Getting the data from snapshot
Person person = postSnapshot.getValue(Person.class);
//Adding it to a string
String string = "Name: "+person.getName()+"\nAddress: "+person.getAddress()+"\n\n";
//Displaying it on textview
textViewPersons.setText(string);
@Override
public void onCancelled(FirebaseError firebaseError)
System.out.println("The read failed: " + firebaseError.getMessage());
这是我的 ListView 代码:
messageList = (ListView) findViewById(R.id.messageList);
messages = new ArrayList<Message>();
mAdapter = new MyArrayAdapter(this, messages);
messageList.setAdapter((ListAdapter) mAdapter);
【问题讨论】:
update listview dynamically with adapter的可能重复 作为替代方案:看看using theFirebaseListAdapter
provided in FirebaseUI。
【参考方案1】:
您可以使用FirebaseUI for android 库。
只需添加依赖项(0.4.4 适用于 firebase 9.4.0 库):
dependencies
// Single target that includes all FirebaseUI libraries
compile 'com.firebaseui:firebase-ui:0.4.4'
然后将 ListView 与 Adapter 连接(在本例中为人员列表):
ListView personsView = (ListView) findViewById(R.id.mylist);
DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
mAdapter = new FirebaseListAdapter<Person>(this, Person.class, R.layout.myItemLayout, ref)
@Override
protected void populateView(View view, Person person, int position)
//Populate the item
;
personsView.setAdapter(mAdapter);
【讨论】:
【参考方案2】:首先,您需要修复对象类型。您的适配器(和支持 ArrayList)具有 Message 对象,但 Firebase 为您提供 Person 对象。
假设你让 Adapter 接受 Person 对象,只需添加到 Adapter
ref.addValueEventListener(new ValueEventListener()
@Override
public void onDataChange(DataSnapshot snapshot)
for (DataSnapshot postSnapshot : snapshot.getChildren())
//Getting the data from snapshot
Person person = postSnapshot.getValue(Person.class);
mAdapter.add(person);
【讨论】:
以上是关于如何将数据从 firebase 检索到 ListView?的主要内容,如果未能解决你的问题,请参考以下文章
如何从firebase检索多个数据到android中的列表视图?
如何从 Firebase 检索数据到 ListView(使用自定义数组适配器)
如何使用 StreamBuilder 将数据从 firebase firestore 检索到颤振中,并使用 ListView.builder 显示值?