Je ne sais pas ce qui ne va pas dans mon code S'il vous plaît Aide-moi. Juste essayer de récupérer des données à visualiser la liste.
mon MainActivity.java
public class MainActivity extends AppCompatActivity {
ListView listView;
FirebaseDatabase database;
DatabaseReference ref;
ArrayList<String> list;
ArrayAdapter <String> adapter;
User user;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
user = new User();
listView = findViewById(R.id.listView);
database = FirebaseDatabase.getInstance();
ref = database.getReference("match1contest1");
list = new ArrayList<>();
adapter = new ArrayAdapter<String>(this,R.layout.user_info,R.id.userInfo, list);
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot ds: dataSnapshot.getChildren()){
user = ds.getValue(User.class);
list.add(user.getName().toString()+user.getEmail().toString());
}
listView.setAdapter(adapter);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
mon User.java
public class User {
private String name;
private String email;
private String phone;
private String userName;
private String password;
public User() {
}
public User(String name, String email, String phone, String userName, String password) {
this.name = name;
this.email = email;
this.phone = phone;
this.userName = userName;
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
Vous trouverez ci-images
Je Je veux juste la valeur Mettre à jour
Je ne sais pas pourquoi il crée plus d'articles
J'ai seulement 3 enfants en firebase
Je suis juste en train de récupérer des données, les données sont enregistrées manuellement à partir de la console firebase
Aidez-moi, s'il vous plaît...
Lorsque vous mettez à jour une valeur dans votre base de données, il déclenchera votre
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {...
Encore une fois, et qui chercher pour tous les enfants (inclus une mise à jour) et sera placé à l' intérieur de la liste à nouveau cela dupliquer les objets depuis l' intérieur de votre onDataChange
vous avez une boucle qui fera une boucle throught tous les enfants encore et les ajoutera à nouveau la liste actuelle peuplée.
Ce que vous devez faire, est d'effacer la liste quand est tiré par les cheveux à nouveau
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
list.clear();
for (DataSnapshot ds: dataSnapshot.getChildren()){
user = ds.getValue(User.class);
list.add(user.getName().toString()+user.getEmail().toString());
}
listView.setAdapter(adapter);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
Une autre façon vous pouvez le faire est d'utiliser updateChildren () avec une carte, ce sera juste mettre à jour l'élément que vous mettez à jour votre base de données