내가 수동으로 중포 기지 데이터베이스에서 값을 변경할 때 대신 목록보기에서 값을 업데이트하는 목록보기에 더 많은 항목을 만들

ICEBlizzard :

나는 내 코드 바랍니다 도움말 Me에서 잘못 무슨 일이 일어나고 있는지 모른다. 그냥 목록보기에 데이터를 검색하려고합니다.

내 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) {

        }
    });
}

}

내 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;
}

아래 이미지는 있습니까

이것은 내 응용 프로그램의 출력입니다

나는 변경 값 중포 기지 데이터베이스를 수동으로 그것은 이미지에서처럼 3 개 이상의 항목을 작성하는 경우

나는 그냥이 값을 업데이트 할

그것은 더 많은 항목을 생성 이유를 모르겠어요

나는 중포 기지에서만 3 아이들이

난 그냥 데이터를 검색하고, 데이터는 중포 기지 콘솔에서 수동으로 저장됩니다

도움말 나하세요 ...

가스통 Saillen :

당신이 당신의 데이터베이스의 값을 업데이트 할 때 트리거됩니다

public void onDataChange(@NonNull DataSnapshot dataSnapshot) {...

다시 말하지만, 그것은 당신의 내부에 있기 때문에 다시이 항목을 중복됩니다 (업데이트 된 일 포함) 모든 어린이를 위해 가져옵니다 및 목록 내부에 배치됩니다 onDataChange당신이 그 모든 어린이 축복하는 뜻 루프 다시 루프를 가지고 다시 추가합니다 현재 인구 목록입니다.

당신이해야 할 일은, 다시 가져올 때 목록을 취소하는 것입니다

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) {

        }
    });

당신이 그것을 할 수있는 또 다른 방법은 사용하는 것입니다 updateChildren ()를 , 이것은 단지 당신이 당신의 데이터베이스에 업데이트하는 항목을 업데이트하는지도

추천

출처http://43.154.161.224:23101/article/api/json?id=275797&siteId=1