저는 Java에 매우 익숙합니다.안드로이드 : 파이어베이스 Datasnapshot과 클래스 레벨 배열리스트에 키를 저장하는 방법?
나는 Firebase 데이터베이스를 통해 루프를 만들고 모든 자식의 키 집합을 ArrayList에 저장하려고합니다. 내가 addValueEventListener
메서드 내에서 ("앱 정보 중") newArray를 기록 할 때
public class MainActivity extends AppCompatActivity {
private DatabaseReference mRefEvents;
private List<String> newArray;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mRefEvents = FirebaseDatabase.getInstance().getReferenceFromUrl("https:***");
newArray = new ArrayList<String>();
mRefEvents.addValueEventListener(new ValueEventListener()
{
@Override
public void onDataChange(DataSnapshot dataSnapshot)
{
for (DataSnapshot child : dataSnapshot.getChildren())
{
for (DataSnapshot grandChild : child.getChildren())
{
newArray.add(grandChild.getKey());
}
}
Log.i("App info middle", newArray.toString());
}
@Override
public void onCancelled(DatabaseError databaseError)
{
}
});
Log.i("App info end", newArray.toString());
}
}
, 나는 내가 필요한 정확한 값을 얻을 :
다음은 코드의 짧은 버전입니다. 그러나 하단의 두 번째 로그 ("App info end")는 빈 배열을 제공하고 ArrayList newArray에 키를 저장하지 않습니다.
나는 간단한 것을 놓치고있을 것이라고 확신하지만 어떤 제안이라도 대단히 감사하겠습니다. 감사!
당신은 절대적으로 알렉산더였습니다. 다음은 콘솔 출력입니다. –
12-26 20 : 02 : 13.175 8247-8247/com.example.kaznaur.simafirebasetrial I/App 정보 끝 : [] 12-26 20 : 02 : 14.259 8247-8247/com.example. kaznaur.simafirebasetrial I/App 정보 중간 : [토론, 연설, 학사, 주부, 음성, 축구] 12-26 20 : 02 : 20.760 8247-8247/com.example.kaznaur.simafirebasetrial I/App 정보 buttonClick : [토론 , Speach, Bachelor, Housewives, Voice, Football] 12-26 20 : 02 : 30.311 8247-8247/com.example.kaznaur.simafirebasetrial I/App 정보 buttonClick : [토론, 연설, 학사, 주부, 음성, 축구] –
Firebase를 사용할 때 처음에는 나를 넘어 뜨 렸습니다. 그것이 당신을 위해 굴러 다행. –