You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Android Studio中实现从Firebase获取数据展示到ListView的问题求解

修改方案

你只需要调整两处代码即可实现需求:

  1. 初始化ArrayAdapter时绑定你声明的ArrayList,这样后续往列表里加数据才会同步到控件上
  2. 在ChildEventListener的onChildAdded回调中读取目标字段,添加到列表后通知适配器刷新

修改后的完整代码如下:

public class TimeTableActivity extends AppCompatActivity {

    ListView table01;
    DatabaseReference Trainline;
    ArrayList<String> arrayList= new ArrayList<>();
    ArrayAdapter<String> arrayAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_time_table);
        Trainline= FirebaseDatabase.getInstance().getReference("Time_table");
        table01 = findViewById(R.id.table01);
        // 这里修改:把arrayList作为第三个参数传入适配器
        arrayAdapter = new ArrayAdapter<>(TimeTableActivity.this, android.R.layout.simple_list_item_1, arrayList);
        table01.setAdapter(arrayAdapter);

        Trainline.addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(@NonNull DataSnapshot snapshot, @Nullable String previousChildName) {
                // 这里修改:取出你需要的字段值,替换引号里的字段名为你红下划线标注的字段名即可
                String targetValue = snapshot.child("你要提取的字段名").getValue(String.class);
                if(targetValue != null){
                    arrayList.add(targetValue);
                    arrayAdapter.notifyDataSetChanged();
                }
            }

            @Override
            public void onChildChanged(@NonNull DataSnapshot snapshot, @Nullable String previousChildName) {
                // 如果需要响应数据修改的话可以在这里加对应逻辑,不需要的话可以留空
            }

            @Override
            public void onChildRemoved(@NonNull DataSnapshot snapshot) {
            }

            @Override
            public void onChildMoved(@NonNull DataSnapshot snapshot, @Nullable String previousChildName) {
            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {
                // 可以加个错误提示方便排查问题
                Toast.makeText(TimeTableActivity.this, "读取数据失败:" + error.getMessage(), Toast.LENGTH_SHORT).show();
            }
        });
    }
}

注意事项

  • 把代码里的你要提取的字段名替换成你数据库里实际标红的字段名称即可,如果你需要展示多个字段,拼接成字符串再加入列表就行
  • 要确保你的Firebase数据库读写权限已经开启,否则会触发onCancelled回调读取不到数据

内容的提问来源于stack exchange,提问作者Lakruwan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 21:15:03