簡體   English   中英

Arraylist.add 在循環內不起作用

[英]Arraylist .add is not working inside loop

我對 homeContent Arraylist 有一些問題。 看看代碼...

        ArrayList<String> homeContent=new ArrayList<>(); //its actually a global list but I'm showing inside just show I've declared and initialised it.
        contentDb=FirebaseDatabase.getInstance().getReference().child("home");
        contentDb.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                for(DataSnapshot ds: dataSnapshot.getChildren()){
                    tag=ds.getValue(String.class);
                    homeContent.add(tag);
                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
                Toast.makeText(getActivity(), "Error Connecting to the Server", Toast.LENGTH_SHORT).show();
            }
        });
        for(int i=0;i<homeContent.size();i++){
            Log.i("Entry",homeContent.get(i));
        }

所以我使用 Log.i 來跟蹤問題出在哪里,所以我發現元素被添加到列表中,但是一旦它從循環和 valueEventListener function 出來,它又回到了其中包含 0 個元素。

編輯:結果表明該循環內沒有任何東西永久保留

好的,多虧了 Johannes Kuhn,問題已經解決,實際上 for 循環是在調用事件處理程序之后執行的,所以我不得不將循環放在事件處理程序中。

ArrayList<String>   arrayList = null;  
contentDb=FirebaseDatabase.getInstance().getReference().child("home");
    contentDb.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for(DataSnapshot ds: dataSnapshot.getChildren()){
                tag=ds.getValue(String.class);
                arrayList = new ArrayList<>();
                arrayList.add(tag); // Add into list like this
            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
            Toast.makeText(getActivity(), "Error Connecting to the Server", Toast.LENGTH_SHORT).show();
        }
    });

更好的是,您可以像我上面分享的那樣將該值添加到列表中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM