В основном я хочу получить строковую переменную, а затем проверить свой один из узлов моей базы данных firebase, чтобы увидеть, существует ли дочерний элемент этой строки, если это так, я хочу, чтобы значения, специфичные для этой строки, были добавлены в мою базу данных, но выполнение не происходит одно за другим, цикл не всегда ожидает полной проверки, существует ли строка как дочерняя в базе данных, он иногда пропускает ее, и, следовательно, значения, которые должны быть добавлены, не все добавляется
Я запускаю эту операцию в отдельном потоке, кстати
count = i;
Elements mShowUpdateName = doc.select("div[class=data main]").select("b").eq(i);
mUpdateName = mShowUpdateName.text();
Elements mShowEpisodeDate = doc.select("div[class=data main]").eq(i);
mEpisodeDate = mShowEpisodeDate.text();
int startIndex = mUpdateName.indexOf("-");
mSeriesName = mEpisodeDate.substring(0,startIndex-1);
Log.e("child" , mSeriesName);
usersTVSeriesRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String mString = mSeriesName.replace(".", "");
if(dataSnapshot.hasChild(mString)){
int first = mEpisodeDate.indexOf("-");
int second = mEpisodeDate.indexOf("-", first + 1);
String season = mEpisodeDate.substring(first+1, second);
second = mEpisodeDate.indexOf("-", first + 1);
int last = mEpisodeDate.lastIndexOf("-");
String episode = mEpisodeDate.substring(second+1, last);
int startIndexDate = mEpisodeDate.indexOf("[");
int endIndexDate = mEpisodeDate.lastIndexOf("]");
String date = mEpisodeDate.substring(startIndexDate +1 , endIndexDate);
HashMap<String, Object> showsMap = new HashMap<>();
showsMap.put("date" , date);
showsMap.put("episode" , episode);
showsMap.put("season", season);
showsMap.put("string", mEpisodeDate);
showsMap.put("index", Integer.toString(count));
showsMap.put("name", mSeriesName);
updateRef.child(mString).child(episode).updateChildren(showsMap);
}
else {
Log.e("no", "no new updates");
Log.e("no", mSeriesName);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
Я хочу, чтобы он всегда проверял, существует ли значение в базе данных, а затем делал соответственно
В настоящее время журнал
E/loop: Step 1. String: Will And Grace
E/loop: Step 1. String: The Grand Tour
E/loop: Step 1. String: The Good Fight
E/loop: Step 1. String: Hanna
E/loop: Step 1. String: What We Do in the Shadows
E/loop: Step 2. checking if the value exists in the database
Step 3. value doesn't exist
Step 2. checking if the value exists in the database
E/loop: Step 3. value doesn't exist
Step 2. checking if the value exists in the database
Step 3. value doesn't exist
E/loop: Step 1. String: Jane The Virgin
E/loop: Step 2. checking if the value exists in the database
E/loop: Step 3. adding value to database
E/loop: Step 1. String: Chicago PD
E/loop: Step 2. checking if the value exists in the database
E/loop: Step 3. adding value to database
E/loop: Step 2. checking if the value exists in the database
E/loop: Step 3. adding value to database
E/loop: Step 2. checking if the value exists in the database
E/loop: Step 3. adding value to database
Я хочу, чтобы он всегда выполнял шаги 1, 2, 3, например,
E/loop: Step 1. String: Chicago Med
E/loop: Step 2. checking if the value exists in the database
E/loop: Step 3. adding value to database
E/loop: Step 1. String: Chicago Fire
E/loop: Step 2. checking if the value exists in the database
E/loop: Step 3. adding value to database
E/loop: Step 1. String: MotherFatherSon
E/loop: Step 2. checking if the value exists in the database
E/loop: Step 3. value doesn't exist