Jak stworzyć i uprościć Java - kod dla systemu Android

0

Pytanie

Jak mogę uprościć cały ten kod? Tworzę menu wyszukiwania i chcę sprawdzić wartości, gdy użytkownik wychodzi z "Tekstu w widoku", i natychmiast wyświetlać w postaci "podglądu" poniżej.

  • Jednym ze sposobów, aby to zrobić z bardzo dużą ilością "jeśli". Proponujesz inna metoda?

  • Używam biblioteki Roon do swojej bazy danych aplikacji.

Chciałem użyć do tego ten kod, ale zobaczył, że liczba "Jeśli" jest bardzo duża.

  • Przyjaciel zaproponował użyć handlowego w bazie danych, ale nie wiem jak napisać kod!

         public void searchHelper() {
         String sOperationValue = spinnerOperation.getText().toString();
         String sTraderValue = spinnerTraderName.getText().toString();
         String sSearchByValue = spinnerSearchBy.getText().toString();
         long startValue = Long.parseLong(etStartDate.getText().toString());
         long endValue = Long.parseLong(etEndDate.getText().toString());
    
         // * * * * *
         if (!sOperationValue.isEmpty() &&
                 !sTraderValue.isEmpty() &&
                 !sSearchByValue.isEmpty() &&
                 startValue >= 14000000 &&
                 endValue <= 15000000) {
    
         }
         // * - * * *
         if (!sOperationValue.isEmpty() &&
                 sTraderValue.isEmpty() &&
                 !sSearchByValue.isEmpty() &&
                 startValue >= 14000000 &&
                 endValue <= 15000000) {
    
         }
         // * - - - -
         if (!sOperationValue.isEmpty() &&
                 sTraderValue.isEmpty() &&
                 sSearchByValue.isEmpty() &&
                 startValue <= 0 &&
                 endValue <= 0) {
    
         }
         // - * * * *
         if (sOperationValue.isEmpty() &&
                 !sTraderValue.isEmpty() &&
                 !sSearchByValue.isEmpty() &&
                 startValue >= 14000000 &&
                 endValue <= 15000000) {
    
         }
         // Here 'Search By' specifies whether the search should be based on the date of registration or on the date of the transaction.
         // Therefore, when Search By is empty, then the start date and end date values are also empty.
         // - * - - -
         if (sOperationValue.isEmpty() &&
                 !sTraderValue.isEmpty() &&
                 sSearchByValue.isEmpty() &&
                 startValue <= 0 &&
                 endValue <= 0) {
    
         }
         // - - * * *
         if (sOperationValue.isEmpty() &&
                 sTraderValue.isEmpty() &&
                 !sSearchByValue.isEmpty() &&
                 startValue >= 14000000 &&
                 endValue <= 15000000) {
    
         }
         // - - - - -
         if (sOperationValue.isEmpty() &&
                 sTraderValue.isEmpty() &&
                 sSearchByValue.isEmpty() &&
                 startValue <= 0 &&
                 endValue <= 0) {
    
         }
     }
    
  • Chciałem też napisać zapytanie z użyciem liter, ale nie mógł. To był kod, który napisałem

     @Query("SELECT * FROM tbl_transaction" +
         " WHERE CASE WHEN operation='null'" +
         " THEN CASE WHEN traderName='null'" +
         " THEN CASE WHEN transactionType ='null'" +
         " THEN CASE WHEN startDate=14000000" +
         " THEN CASE WHEN endDate=15000000" )
         List<Transaction> getSearchValues(String operation, String traderName, String transactionType, long startDate, long endDate);
    

Mimo, że jestem bardzo mocno szukałem właściwą decyzję, ja niestety nie mogłem go znaleźć.

Z góry dziękuję za pomoc.

Form Image

android android-room database java
2021-11-23 22:09:06
2
0

Rodzaj operacji, nazwę użytkownika, szukaj-wszystko to wygląda na błystki. Gdzie można dostać dane do wypełnienia parametrów. Jeśli on sztywno zakodowane w aplikacji, w zależności od tego, jak go wdrożyć, jest mało prawdopodobne, że będą kiedykolwiek puste, tak jak zawsze wybrano ustawienie domyślne. Być może, nie musisz sprawdzać, puste czy oni. Następnie należy głównie skupić się na tekstach edycji datę rozpoczęcia i datę zakończenia. Następnie możesz jeszcze bardziej poprawić sytuację, stosując zamiast tego selektora dat.

2021-11-24 00:13:17
0

Ja skrócił go dla ciebie, to nie jest najlepszy sposób, aby to zrobić, ale nadal działa

Zrobię jego krótszą wersję, ale to zajmie trochę czasu, więc jak to zrobić, będzie trudniej:

public void searchHelper() {
    boolean b1 = spinnerOperation.getText().toString()isEmpty();
    boolean b2 = spinnerTraderName.getText().toString()isEmpty();
    boolean b3 = spinnerSearchBy.getText().toString()isEmpty();
    boolean b4 = Long.parseLong(etStartDate.getText().toString()) >= 14000000 && Long.parseLong(etEndDate.getText().toString()) <= 15000000;
     boolean b5 = Long.parseLong(etStartDate.getText().toString()) <= 0 && Long.parseLong(etEndDate.getText().toString()) <= 0;

     // * * * * *
     if (!b1 && !b2 && !b3 && b4) {

     }
     // * - * * *
     if (!b1 && b2 && !b3 && b4) {

     }
     // * - - - -
     if (!b1 && b2 && b3 && b5) {

     }
     // - * * * *
     if (b1 && !b2 && !b3 && b4) {

     }
     // Here 'Search By' specifies whether the search should be based on the date of registration or on the date of the transaction.
     // Therefore, when Search By is empty, then the start date and end date values are also empty.
     // - * - - -
     if (b1 && !b2 && b3 && b5) {

     }
     // - - * * *
     if (b1 && b2 && !b3 && b4) {

     }
  // - - - - -
    if (b1 && b2 && b3 && b5) {

  }
 }
2021-11-24 00:02:54

W innych językach

Ta strona jest w innych językach

Русский
..................................................................................................................
Italiano
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................