0
votes

Comment réparer mon arraylist et la définir dans ma liste

Donc, j'ai le problème de mettre les valeurs de la Firestore à ma liste de liste. J'ai regardé des tutoriels sur YouTube pour savoir comment cela fonctionne, mais malheureusement, rien ne fonctionne.

J'ai essayé quelque chose que rien ne fonctionne. P>

public class MainActivity extends AppCompatActivity {

    ArrayList<String> doctors =new ArrayList<String>();
    ListView txt;

    private FirebaseFirestore db = FirebaseFirestore.getInstance();
    private CollectionReference noteRef = db.collection("Doctors");
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        db.collection("Doctors")
                .get()
                .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                    @Override
                    public void onComplete(@NonNull Task<QuerySnapshot> task) {
                        if (task.isSuccessful()) {

                            for (QueryDocumentSnapshot document : task.getResult()) {
                                doctors.add(document.getId());


                            }
                        } else {
                            Toast.makeText(MainActivity.this,"Failed", Toast.LENGTH_LONG).show();

                        }
                    }
                });
        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, doctors);

        txt = (ListView)findViewById(R.id.gg1);
        txt.setAdapter(arrayAdapter);
    }
}


5 commentaires

Quelles erreurs obtenez-vous?


Aucun, il ne s'agit que d'afficher sur la vue de ma liste, mais chaque fois que je spécifie un tableau spécifique comme chaîne [] DISP = {"Hello", "World}; ça marche.


Avez-vous essayé de mettre un breakpoint `médecins.add (document.getid ());` Pour voir si vous obtenez des données?


Essayé de l'imprimer en utilisant Toast. Il affiche les données mais lorsque j'ai essayé de le mettre dans mon arrayadapter, il ne fait rien, il est devenu une liste vide ou quelque chose, je n'ai vraiment aucune idée.


@Ezkiel Rehrasser votre question ou vous ajoutez de commentaire sur la liste qui n'affiche pas les éléments de la liste.


3 Réponses :


1
votes

Essayez de déplacer:

ArrayAdapter<String> arrayAdapter = new 
ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, doctors);

txt.setAdapter(arrayAdapter)


0 commentaires

0
votes

Vérifiez ce code édité

public class MainActivity extends AppCompatActivity {

ArrayList<String> doctors =new ArrayList<String>();
ListView txt;

private FirebaseFirestore db = FirebaseFirestore.getInstance();
private CollectionReference noteRef = db.collection("Doctors");


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, doctors);

    txt = (ListView)findViewById(R.id.gg1);

    db.collection("Doctors")
            .get()
            .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                @Override
                public void onComplete(@NonNull Task<QuerySnapshot> task) {
                    if (task.isSuccessful()) {

                        for (QueryDocumentSnapshot document : task.getResult()) {
                            doctors.add(document.getId());


                        }
                   txt.setAdapter(arrayAdapter);
                    } else {
                        Toast.makeText(MainActivity.this,"Failed", Toast.LENGTH_LONG).show();

                    }
                }
            });
        }
     }


0 commentaires

0
votes

Votre code a l'air bien, mais chaque fois que vous apportez quelques modifications, vous devez également informer l'adaptateur sur ces changements. Il est bon que vous définissais l'adaptateur en dehors du rappel et de l'intérieur, avertir simplement l'adaptateur sur les modifications à l'aide de la ligne de code suivante:

private ArrayAdapter<String> arrayAdapter;


1 commentaires

Salut Ezekiel! Avez-vous essayé ma solution ci-dessus, ça marche? Si vous pensez que ma réponse vous a aidé, veuillez envisager de l'accepter en cliquant sur la coche (✔) sur le côté gauche sous les flèches de vote. Devrait changer la couleur en vert. J'apprécierais. Merci!