繁体   English   中英

Switch 语句没有返回正确的值

[英]Switch statement not returning correct value

我在回收器视图适配器的getItemViewType使用 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.7 的 JAVA 版本提供了String switch-case statements 如果您使用的低于此值,则所有情况都不会触发。 要实现这一点,请使用Enum方法,当我们使用它时,我们可以完美地完成这项工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM