2017-03-19 1 views

Antwort

2

Sie prüfen nicht nur, wenn title Kind vorhanden ist, müssen Sie alle Foren durchlaufen, um herauszufinden, ob es bereits eine mit dem Titel ist, dass Sie speichern möchten. Sie können es wie folgt zu tun:

final String title_val = "KS1: " + mPostTitle.getText().toString().trim(); 
mDatabase2 = FirebaseDatabase.getInstance().getReference().child("Forums"); 
mDatabase2.addListenerForSingleValueEvent(new ValueEventListener() { 
    @Override 
    void onDataChange(DataSnapshot forumsSnapshot) { 
     boolean isTitleAlreadyUsed = false; 

     for (DataSnapshot specificForum : forumsSnapshot.getChildren()) { 
      // Check if key 'title' exists and if title value is equal to value to save (title_val) 
      if (specificForum.hasChild("title") && (title_val.equals(specificForum.child("title").getValue()))){ 
       isTitleAlreadyUsed = true; 
      } 
     } 

     if (isTitleAlreadyUsed) { 
      String success = "Your title already exists..."; 
      Toast.makeText(PostActivityKinderSection1.this, success, Toast.LENGTH_LONG).show(); 
      mSubmitBtn.setEnabled(true); 
     } 
     else { 
      mSubmitBtn.setEnabled(false); 
      startPosting(); 
     } 
    } 
} 

Wenn Sie Performance-Problem haben versuchen for-Schleife mit while-Schleife zu ersetzen oder den Titel als Kind Schlüssel in Ihrer db Konstruktion verwenden.

+0

es zeigt an, dass der Titel bereits existiert, obwohl es nicht ist. Wie behebt man das? danke btw –

+0

oh ich habe gerade vergessen, isTitleAlreadyUsed auf false zu setzen. ich danke dir sehr. es funktioniert –

+1

Mein schlecht, wie Sie sagten, meine Init von 'isTitleAreadyUsed' war falsch. Ich aktualisiere meine Antwort, um das jetzt zu beheben;) –

Verwandte Themen