Firebase 信息显示在 ListView 的一个列表项中
Firebase information are showing in one list item of the ListView
这是我的代码,它在列表视图的一项中显示了从应用程序连接到的 Fire-base 返回的所有信息。
有人可以帮忙编写代码吗?
public class usernews extends AppCompatActivity {
FirebaseDatabase database = FirebaseDatabase.getInstance();
final DatabaseReference myRef = database.getReference("allNews");
private ListView lsStudents;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_usernews);
lsStudents=(ListView) findViewById(R.id.list);
...
}
...
}
我认为这里有错误,但我找不到它
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// This method is called once with the initial value and again
// whenever data at this location is updated.
final List<String> areas = new ArrayList<String>();
for (DataSnapshot areaSnapshot: dataSnapshot.getChildren()) {
String value1 = String.valueOf(dataSnapshot.getValue());
areas.add(value1);
}
String value2 = String.valueOf(dataSnapshot.getValue());
Log.d("allNews", "Value is: " + value2);
ArrayAdapter<String> areasAdapter = new ArrayAdapter<String>(usernews.this,android.R.layout.simple_expandable_list_item_1, areas);
lsStudents.setAdapter(areasAdapter);
}
});
Firebase 数据的屏幕截图。 Link
引用正确节点后的屏幕截图Link
改变你的DataBaseReference
.
使用这个
final DatabaseReference myRef = database.getReference("allNews").child("allNews");
而不是
final DatabaseReference myRef = database.getReference("allNews");
您的实际数据在 "allNews"
标签内。最终它的子节点也有相同的名称。
然后更新你的 for 循环。您从错误的引用中获取数据。
final List<String> areas = new ArrayList<String>();
for (DataSnapshot areaSnapshot: dataSnapshot.getChildren()) {
// Get value from areaSnapShot not from dataSnapshot
String value1 = String.valueOf(areaSnapshot.getValue());
areas.add(value1);
}
这是我的代码,它在列表视图的一项中显示了从应用程序连接到的 Fire-base 返回的所有信息。
有人可以帮忙编写代码吗?
public class usernews extends AppCompatActivity {
FirebaseDatabase database = FirebaseDatabase.getInstance();
final DatabaseReference myRef = database.getReference("allNews");
private ListView lsStudents;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_usernews);
lsStudents=(ListView) findViewById(R.id.list);
...
}
...
}
我认为这里有错误,但我找不到它
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// This method is called once with the initial value and again
// whenever data at this location is updated.
final List<String> areas = new ArrayList<String>();
for (DataSnapshot areaSnapshot: dataSnapshot.getChildren()) {
String value1 = String.valueOf(dataSnapshot.getValue());
areas.add(value1);
}
String value2 = String.valueOf(dataSnapshot.getValue());
Log.d("allNews", "Value is: " + value2);
ArrayAdapter<String> areasAdapter = new ArrayAdapter<String>(usernews.this,android.R.layout.simple_expandable_list_item_1, areas);
lsStudents.setAdapter(areasAdapter);
}
});
Firebase 数据的屏幕截图。 Link
引用正确节点后的屏幕截图Link
改变你的DataBaseReference
.
使用这个
final DatabaseReference myRef = database.getReference("allNews").child("allNews");
而不是
final DatabaseReference myRef = database.getReference("allNews");
您的实际数据在 "allNews"
标签内。最终它的子节点也有相同的名称。
然后更新你的 for 循环。您从错误的引用中获取数据。
final List<String> areas = new ArrayList<String>();
for (DataSnapshot areaSnapshot: dataSnapshot.getChildren()) {
// Get value from areaSnapShot not from dataSnapshot
String value1 = String.valueOf(areaSnapshot.getValue());
areas.add(value1);
}