Сравнение текста в Android

Я пытаюсь сравнить текст в Android, чтобы избежать обновления текстов, если это не нужно (в противном случае тексты для разных полей обновляются каждые 50 мс).

С обычными текстами это не проблема. Все отлично работает Но: если в тексте есть числа, текст кажется не равным. Зачем?

Некоторые примеры: "Abschaltpunkt" равно "Abschaltpunkt" (ОК) / "Gewicht" равно "Gewicht" (ОК) / "100 кг" НЕ равно "100 кг" (NOK) / "Abschaltpunkt 2" равно НЕ равняется "Abschaltpunkt 2" (NOK"

Новый вопрос после редактирования (теперь сравнение работает нормально). Как видите, я использую поток пользовательского интерфейса для обновления текста. Это приложение работает в сети и получает около 300 сообщений в секунду с различными данными (да, это необходимо). Поэтому мне нужно сравнение, иначе поток заблокирован, и приложение не будет отвечать на входные данные пользователя. Есть ли другое решение? Или мое решение хорошее?

Это мой код:

 /**
  * Compares the current and new text und updates the text if necessary
  * @param RessourceID given by R.id...
  * @param New text
  */
 private void ChangeText (final int RessourceID, final String sText) { 
  try {
   TextView tv = (TextView) findViewById(RessourceID);
   // Erst prüfen ob Text ersetzt werden muss -> Spart Rechenzeit
   if (tv.getText().toString().equals(sText)) {
    Log.e(this.getClass().getSimpleName(), "Text nicht ersetzen: " + tv.getText() + " != " + sText);
   } else {
    ChangeTextThread(tv, sText);
    Log.e(this.getClass().getSimpleName(), "Text ersetzen: " + tv.getText() + " != " + sText );     
   }
  } catch (Throwable t) {
   Log.e(this.getClass().getSimpleName(), "ChangeText", t);
  }
 }
  
  /**
   * Change the text in UI tread 
   */
  private void ChangeTextThread (final TextView tv, final String sText) {
   this.runOnUiThread(new Runnable() {
      public void run() {
       
       try {
        tv.setText(sText);
       } catch (Throwable t) {
       Log.e(this.getClass().getSimpleName(), "ChangeTextThread", t);
       }
    
      }
    });
  }

2 ответа

Попробуй так

if(tv.getText().toString().equals(sText))

Используемый .equals() или же .equalsIgnoreCase() метод сравнения строк

Попробуйте код ниже:

if(tv.getText().toString.equalsIgnoreCase(sText)){
     //Do your stuff here
}
Другие вопросы по тегам