android - 列表视图从android中firebase中的实时数据库中检索一项
问题描述
我正在尝试在列表视图中检索 fire-base 中的所有数据,但它只添加了列表视图中的第一项。一旦我添加了一个新学生,它只会将最后一个新学生检索到列表视图中。我在互联网上进行了很多搜索,但没有得到所需的解决方案。请问你能帮我吗?
这是我的课程,它将所需的数据添加到列表视图中。
public class emptySeatNum extends Activity {
ListView listView;
FirebaseDatabase database;
DatabaseReference reference;
ArrayList<String> array = new ArrayList<>();
ArrayAdapter<String> adapter;
Students students;
String studentName;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.seat_num);
listView = findViewById(R.id.newListView);
students = new Students();
database = FirebaseDatabase.getInstance();
reference = database.getReference("Students");
studentName = students.getStuden_name();
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot ds: dataSnapshot.getChildren()){
students = ds.getValue(Students.class);
array.add(students.getStuden_name());
adapter = new ArrayAdapter<String>(emptySeatNum.this,android.R.layout.simple_list_item_1,array);
listView.setAdapter(adapter);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
解决方案
这种行为是因为您每次都在for
循环中添加以下 2 行,这就是每次都制作适配器并设置它。
adapter=newArrayAdapter<String(emptySeatNum.this,android.R.layout.simple_list_item_1,array);
listView.setAdapter(adapter);
将它们放在for
循环之外,然后运行它。
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot ds: dataSnapshot.getChildren()){
students = ds.getValue(Students.class);
array.add(students.getStuden_name());
}//for loop ending brace
adapter = new ArrayAdapter<String>(emptySeatNum.this,android.R.layout.simple_list_item_1,array);
listView.setAdapter(adapter);
}
推荐阅读
- python - Python 类实例共享相同的值
- java - 如何在java中声明字典字典
- javascript - Highcharts:网络图:标记半径=连接数
- yarnpkg - 为什么在尝试安装此依赖项时此 github 工作流程会失败?
- android - Android BLE 示例
- d3.js - 本地主机上的网页无法访问 Google Cloud Storage 存储桶 file.csv
- python - 检查多输出回归技术的准确性
- marklogic - ml-gradle 本地消息错误导致部署失败
- r - R Shiny - 如何根据条件显示/隐藏“文件输入”(选项卡面板选择)
- react-native - 禁用子组件以获取父滚动视图的高度