public class OrderRecord extends AppCompatActivity {
final FirebaseFirestore dbList = FirebaseFirestore.getInstance();
private ListView listview;
private String dbText;
private TextView text1;
private Button btn;
private Button btn2;
private String str ;
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_listview); // a에서 activity_listview 변경
listview = (ListView)findViewById(R.id.listview);
text1 = (TextView)findViewById(R.id.text1);
btn = (Button)findViewById(R.id.btn);
btn2 = (Button)findViewById(R.id.btn2);
ArrayList<String> arrayList = new ArrayList();
DocumentReference docRef = dbList.collection("order").document("info");
docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
if (document.exists()) {
Toast.makeText(getApplicationContext(), "성공", Toast.LENGTH_SHORT).show();
text1.setText(document.getData().toString());
str = text1.getText().toString();
} else {
}
} else {
}
}
});
Toast.makeText(getApplicationContext(), "성공1", Toast.LENGTH_SHORT).show();
arrayList.add("test");
Toast.makeText(getApplicationContext(), "성공2", Toast.LENGTH_SHORT).show();
arrayList.add(str);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, arrayList);
Toast.makeText(getApplicationContext(), "성공3", Toast.LENGTH_SHORT).show();
listview.setAdapter(adapter);
}
}
위에서부터 아래로 코드가 실행되기 때문에 arrayList에 추가할 내용을 먼저 firebase에서 가져온 다음 arrayList.add(str)해서 추가를 하려 했는데 모든 코드가 다 실행된이후 firebase에서 데이터를 가져오는 코드가 실행이됩니다.
text1에는 firebase에서 가져온 데이터를 정확하게 출력했습니다
성공이라는 토스트 메시지가 성공1 성공2 성공3 성공 이 순서대로 나옵니다.
arrayList에 데이터를 추가 하기 전에 firebase에서 데이터를 가져오고 싶은데 어떻게 해야하나요...?
질문을 작성하면서 주석 처리된 코드를 지우면서 { } 이것들의 갯수 오류가 있을거 같네요.. 근데 안드로이드스튜디오에서 코드는 잘 작동합니다.