嗨,我试图从数据库中检索一个列表并将其添加到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();
}
我不知道我的问题是否很明显英语不是我的母语。
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] 删除。
我来说两句