Firebase从数据库检索数据

达尼洛·拉马萨莱斯(Danilo Lamazales)

嗨,我试图从数据库中检索一个列表并将其添加到ListView中,我的问题是该事件仅在onResume()之后触发,因此onCreate()函数上的数组为空。我想检索onCreate()函数上的数据并创建我的ListView,这里是代码。

公共类MainActivity扩展了AppCompatActivity {

private DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference("projetos");
private DatabaseReference mProjetoReference;
private ChildEventListener mProjetoListener;

private List<Projeto> projetos;
ListView listaProjetos;
ProjetoDAO projetoDAO;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    projetos = new ArrayList<Projeto>();
    mDatabase.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            Projeto projeto = new Projeto();
            for(DataSnapshot postSnapShot : dataSnapshot.getChildren()){
                projeto = postSnapShot.getValue(Projeto.class);
                projetos.add(projeto);
            }
            //Log.i("TESTEList", "projetos tamanho = " + projetos.size());
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

    listaProjetos = findViewById(R.id.lista);
    ArrayAdapter<Projeto> adapter = new ArrayAdapter<Projeto>(this, android.R.layout.simple_list_item_1, projetos);
    listaProjetos.setAdapter(adapter);
}

@Override
protected void onStart() {
    super.onStart();

}

我不知道我的问题是否很明显英语不是我的母语。

Pavneet_Singh

for有创建适配器的数据后,循环移动列表和适配器的代码

// for future , accessible in other methods
ArrayAdapter<Projeto> adapter 
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    projetos = new ArrayList<Projeto>();
    // for efficiency, time consuming so do it early
    listaProjetos = findViewById(R.id.lista);
    mDatabase.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            Projeto projeto = new Projeto();
            for(DataSnapshot postSnapShot : dataSnapshot.getChildren()){
                projeto = postSnapShot.getValue(Projeto.class);
                projetos.add(projeto);
            }
           adapter = new ArrayAdapter<Projeto>(MainActivity.this, android.R.layout.simple_list_item_1, projetos);
          //  Note : inside anonymous classes use
          // ActivityName.this for context
           listaProjetos.setAdapter(adapter);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章