Оператор Switch не возвращает правильное значение - PullRequest
0 голосов
/ 02 марта 2020

Я использую оператор switch в представлении адаптера getItemViewType. Ни один из случаев в операторе Switch в getItemViewType не вызывается. Я печатаю журнал, и он говорит, что код не выпадает ни одного оператора switch Я не понимаю, где этот код имеет ошибку. Любая помощь будет признательна. Спасибо

  @Override
    public int getItemViewType(int position) {

        Log.d(TAG, "getItemViewType: Type "+wrapper.getMESSAGE_TYPE()); // it return class 12
        if (Session.getUserID().equals(wrapper.getOTHER_USER_ID())){

            switch (wrapper.getMESSAGE_TYPE()){
                case "class 0":                    
                    return 0;

                case "class 1":
                    return 1;

                case "class 2":
                    return 2;

                case "class 3":
                    return 3;

                case "class 4":
                    return 4;

                case "class 5":
                    return 5;

                case "class 6":
                    return 6;

                case "class 7":
                    return 7;

                case "class 8":
                    return 8;

                case "class 9":
                    return 9;

                case "class 10":
                    return 10;

                case "class 11":
                    return 11;

                case "class 12":
                    Log.d(TAG, "getItemViewType: 12  "+wrapper.getMESSAGE_TYPE()); // it's not calling 
                    return 12;
            }
        }else {

            switch (wrapper.getMESSAGE_TYPE()){
                case "class 0":
                   return 0;
                case "class 1":
                    return 1

                case "class 2":
                    return 2

                case "class 3":
                    return 3

                case "class 4":
                    return 4

                case "class 5":
                    return 5

                case "class 6":
                    return 6

                case "class 7":
                    return 7

                case "class 8":
                    return 8

                case "class 9":
                    return 9

                case "class 10":
                    return 10

                case "class 11":
                    return 11

                case "class 12":             
                Log.d(TAG, "getItemViewType: 12  "+wrapper.getMESSAGE_TYPE()); // it's not calling  either       
                    return 12


            }
        }

         // none of above case called and code then falls into this below code

        Log.d(TAG,"End Of Get Item View Type = "+wrapper.getMESSAGE_TYPE()); // its return class 12
        boolean checkValue;
        if (wrapper.getMESSAGE_TYPE().equals("class 12")){
            Log.d(TAG, "getItemViewType:Check  "+wrapper.getMESSAGE_TYPE());
            checkValue = true;
        }else {
            Log.d(TAG, "getItemViewType:Check 2nd  "+wrapper.getMESSAGE_TYPE());
            checkValue = false;
        }
        Log.d(TAG, "getItemViewType: Check Value ==== "+checkValue); // check value here is true
        return super.getItemViewType(position);
    }

1 Ответ

0 голосов
/ 03 марта 2020

Да, String switch-case statements доступны с JAVA версии 1.7. Если вы используете ниже этого, ни один из случаев не получит триггер. Чтобы достичь этого, пожалуйста, используйте метод Enum, и когда мы используем его, мы можем выполнить эту работу в идеальном порядке.

...