В настоящее время в подробном представлении есть плавающее основание, в этом упражнении я передаю информацию об Объекте с намерением.Я хочу, чтобы, когда пользователь входит в действие detailView, у меня было заполненное сердце, если этот Automoviles
objectId уже существует в узле Favorites.if, не добавляя информацию в базу данных.Если избранное уже существует и у него заполнено сердце, если пользователь щелкнет снова, оно удалит его из базы данных.
Это мой класс избранного:
public class Favorites {
private String id;
private String automovilesId;
private String userId;
private String fecha;
public Favorites() {
}
public Favorites(String automovilesId, String userId, String fecha) {
this.automovilesId = automovilesId;
this.userId = userId;
this.fecha = fecha;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getAutomovilesId() {
return automovilesId;
}
public void setAutomovilesId(String automovilesId) {
this.automovilesId = automovilesId;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getFecha() {
return fecha;
}
public void setFecha(String fecha) {
this.fecha = fecha;
}
}
На данный момент у меня естьэтот код:
databaseReference = FirebaseDatabase.getInstance().getReference(AppModel.Favorites);
favoritesButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
final DatabaseReference usersRef = rootRef.child("Favorites");
favorites = new Favorites(automoviles.getObjectId(), user.getUid(), AppModel.GetDate());
databaseReference.push().setValue(favorites);
}
});
Который ведет эту запись в базе данных:
Данные Firebase
Это все хорошо, но мне нужно проверить такжеесли избранное существует или отсутствует в базе данных, или же каждый раз, когда я запускаю эмулятор Android, он создаст другой узел избранного.
Теперь я добавил больше кода.Но когда я запускаю его и добавляю этот метод AddFavorite, он создает бесконечные циклы любимых узлов в базе данных
databaseReference = FirebaseDatabase.getInstance().getReference(AppModel.Favorites);
favoritesButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
final DatabaseReference usersRef = rootRef.child("Favorites");
favorites = new Favorites(automoviles.getObjectId(), user.getUid(), AppModel.GetDate());
databaseReference.push().setValue(favorites);
usersRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String car = ds.child("automovilesId").getValue(String.class);
Favorites fav =ds.getValue(Favorites.class);
String carId =fav.getAutomovilesId();
Log.i("No","Este es el nombre------>:"+carId);
String id=ds.getKey();
AddFavoritesuser();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
});
Это метод AddFavorite и метод удаления:
private void AddFavoritesuser() {
favoritesButton.setImageResource(R.drawable.ic_favorite);
favorites = new Favorites(automoviles.getObjectId(), user.getUid(), AppModel.GetDate());
databaseReference.push().setValue(favorites);
}
И удаление:
private void deleteFavoritesUser(String key) {
favoritesButton.setImageResource(R.drawable.ic_favorite_border);
databaseReference.child(key).getRef().removeValue();
}
Короче говоря, я хочу, чтобы он проверил, существует ли этот объект объекта Automoviles.Если он существует, пользователь входит и видит заполненное сердце, если он хочет удалить это избранное, он щелкает снова, и он запускает метод deleteFovingUser.Но мой вопрос в том, что, если Избранное все еще не создано в базе данных, как я могу также проверить это?.
Я снова запустил приложение, и я снова создал ту же Вейл:
Как видите, у меня та же запись automovilesId