im пытается сравнить текст в андроиде, чтобы избежать обновления текстов, если это не необходимо (в противном случае тексты для разных полей обновляются каждые 50 мс).Сравнение текста в android
С обычными текстами это не проблема. Все работает нормально. Но: Если в тексте есть цифры, текст кажется не равным. Зачем?
Некоторые примеры: "Abschaltpunkt" равно "Abschaltpunkt" (OK)/ "Gewicht" равно "Gewicht" (OK)/ "100 кг" не равно "100 кг" (NOK)/ «Abschaltpunkt 2» НЕ равно «Abschaltpunkt 2» (NOK»
нового вопроса после редактирования (сравнительные отлично теперь работает). Как вы видите, я использую поток пользовательского интерфейса для обновления текста. Это приложение работает в сети и принимает arround 300 сообщений в секунду с разными данными (да, это необходимо). Поэтому мне нужен компаньон, иначе поток будет заблокирован, и приложение не будет отвечать на пользовательские входы. Есть ли еще одно решение Тион? Или мое решение хорошее?
Это мой код:
\t /**
\t * Compares the current and new text und updates the text if necessary
\t * @param RessourceID given by R.id...
\t * @param New text
\t */
\t private void ChangeText (final int RessourceID, final String sText) { \t
\t \t try {
\t \t \t TextView tv = (TextView) findViewById(RessourceID);
\t \t \t // Erst prüfen ob Text ersetzt werden muss -> Spart Rechenzeit
\t \t \t if (tv.getText().toString().equals(sText)) {
\t \t \t \t Log.e(this.getClass().getSimpleName(), "Text nicht ersetzen: " + tv.getText() + " != " + sText);
\t \t \t } else {
\t \t \t \t ChangeTextThread(tv, sText);
\t \t \t \t Log.e(this.getClass().getSimpleName(), "Text ersetzen: " + tv.getText() + " != " + sText); \t \t \t \t \t
\t \t \t }
\t \t } catch (Throwable t) {
\t \t \t Log.e(this.getClass().getSimpleName(), "ChangeText", t);
\t \t }
\t }
\t \t
\t \t /**
\t \t * Change the text in UI tread
\t \t */
\t \t private void ChangeTextThread (final TextView tv, final String sText) {
\t \t \t this.runOnUiThread(new Runnable() {
\t \t \t \t public void run() {
\t \t \t \t \t
\t \t \t \t \t try {
\t \t \t \t \t \t tv.setText(sText);
\t \t \t \t \t } catch (Throwable t) {
\t \t \t \t \t \t \t Log.e(this.getClass().getSimpleName(), "ChangeTextThread", t);
\t \t \t \t \t }
\t \t
\t \t \t \t }
\t \t \t \t });
\t \t }
Новый вопрос. – Selucky