Android için Java kodu nasıl oluşturulur ve basitleştirilir

0

Soru

Tüm bu kodu nasıl basitleştirebilirim? Bir arama menüsü oluşturuyorum ve kullanıcı bir 'Metin Görünümünden' çıktığında değerleri kontrol etmek ve çıktıyı hemen aşağıda bir 'Geri Dönüşüm Görüntüleyicisi' olarak görüntülemek istiyorum.

  • Bir yol bunu çok sayıda IFS ile yapmaktır. Öneriyor musun başka bir yöntem?

  • Uygulama veritabanım için Roon Kütüphanesini kullanıyorum.

Bunun için bu kodu kullanmak istedim ama IFs sayısının çok yüksek olduğunu gördüm.

  • Bir arkadaşım veritabanında Case kullanmayı önerdi, ancak kodunu nasıl yazacağımı bilmiyorum!

         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) {
    
         }
     }
    
  • Ayrıca Case kullanarak bir sorgu yazmak istedim ancak başarısız oldum. Yazdığım kod buydu.

     @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);
    

Doğru çözümü çok aramama rağmen maalesef bulamadım.

Yardımlarınız için şimdiden teşekkür ederim.

Form Image

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

OperationType, TraderName, SearchBy hepsi İplikçilere benziyor. Seçenekleri doldurmak için verileri nereden alıyorsunuz. Nasıl uyguladığınıza bağlı olarak uygulamada kodlanmışsa, her zaman varsayılan bir seçenek seçildiğinden, hiç boş olmayacaktır. Boş olup olmadıklarını kontrol etmeniz gerekmeyebilir. Sonra çoğunlukla ilişkili ve birden Edittexts üzerinde duruluyor. Daha sonra bunun yerine Tarih seçicileri kullanarak daha da geliştirebilirsiniz.

2021-11-24 00:13:17
0

Senin için kısalttım, bunu yapmanın en iyi yolu bu değil ama yine de işe yarıyor

Bunun daha kısa bir versiyonunu yapacağım, ancak yapılması daha karmaşık olacağından biraz zaman alacak:

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

Diğer dillerde

Bu sayfa diğer dillerde

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