Как сохранить значения в списке из ValueEventListener () и получить его - PullRequest
0 голосов
/ 16 апреля 2020

Значения Datasnapshot не сохраняются в списке.

   public class TestActivity extends AppCompatActivity {

    private DatabaseReference InchargeRef;
    private String userID;
    private TextView txt,txt1,txt2,txt3;
    private String Male;

    String[] abi = {};
    private ArrayList<String> list = new ArrayList<String>(Arrays.asList(abi));

    Integer[] abi1 = {10, 30, 20, 50, 0, 0};
    private ArrayList<Integer> list1 = new ArrayList<Integer>(Arrays.asList(abi1));

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);

        txt = findViewById(R.id.txt);

        userID = FirebaseAuth.getInstance().getCurrentUser().getUid();


        InchargeRef = FirebaseDatabase.getInstance().getReference().child("Incharge New Events Preview")
                .child(userID).child("Services");

        list1.removeAll(Arrays.asList(Integer.valueOf(0)));
        Collections.sort(list1);
        int k = 0;
        int i = 0;
        int n = list1.size();

        while(k < list1.size())
        {

            if (i < n && list1.get(i) > 0)
            {
                Male = String.valueOf(list1.get(i));

                InchargeRef.orderByChild("Male").equalTo(Male).addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                        for(DataSnapshot ds : dataSnapshot.getChildren()) {
                            String date = ds.child("Date").getValue(String.class);
                            String session = ds.child("Session").getValue(String.class);

                            storingvalues(date, session);

                        }

                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError databaseError) {

                    }
                });

                i++;
            }
        }

        txt.setText(String.valueOf(list1.size()));

    }

    public void storingvalues(String Date, String Session)
    {
        String a = Date + "," + Session;

        list.add(a);
    }

}

В приведенном выше коде я получаю некоторые данные из базы данных Firebase. Все работает отлично. Но я хочу сохранить все значения в списке и показать размер списка в TextView. Основной мотив - изначально мужчина = 10, поэтому он получит некоторые данные (пример значений 2). Сохраните его в списке, и после завершения Male заменит его на 20, поэтому он получит некоторые данные (набор значений Ex.1). Аналогично потребуется 4 входа 10,20,30,50. И теперь список будет иметь некоторое количество значений. Ex.it будет иметь значения до индекса от 6 до 7, что бы это ни было. И тогда Atlast я хочу отобразить размер текста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...