Java Android:基于两个微调器选择组合的操作

Java Android:基于两个微调器选择组合的操作,java,android,android-studio,android-spinner,android-image,Java,Android,Android Studio,Android Spinner,Android Image,我有一个有两个旋转器的活动。一个是头发的类型,另一个是头发的颜色。我希望图片(在头部)根据从微调器中选择的两个项目进行更改 以下是它应该做的: 已加载活动(微调器设置为“秃顶”和“黑色”) 头发是秃顶的 将头发类型更改为“男性短发” 头发变为黑色的男性短发 将颜色更改为“金发” 头发变为短的金色男性头发 但是第三步不行 这是我的密码: public class HeadZoom extends MainActivity implements AdapterView.OnItemSel

我有一个有两个旋转器的活动。一个是头发的类型,另一个是头发的颜色。我希望图片(在头部)根据从微调器中选择的两个项目进行更改

以下是它应该做的:

  • 已加载活动(微调器设置为“秃顶”和“黑色”)
    • 头发是秃顶的
  • 将头发类型更改为“男性短发”
    • 头发变为黑色的男性短发
  • 将颜色更改为“金发”
    • 头发变为短的金色男性头发
  • 但是第三步不行

    这是我的密码:

    public class HeadZoom extends MainActivity implements AdapterView.OnItemSelectedListener{
    
    private Spinner hairSpinner;
    private Spinner hairColor;
    private String type;
    private String color;
    private ImageView imageView;
    private List<String> hairTypeArray = new ArrayList<String>();
    private List<String> hairColorArray = new ArrayList<String>();
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.head_zoom);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
    
        imageView = (ImageView) findViewById(R.id.head);
        type="Bald";
    
        hairSpinner = (Spinner) findViewById(R.id.hairSpinner);
        hairSpinner.setOnItemSelectedListener(this);
        List<String> hairTypeArray = new ArrayList<String>();
        hairTypeArray.add("Bald");
        hairTypeArray.add("Female Short");
        hairTypeArray.add("Female Medium");
          (...)
        ArrayAdapter<String> hairTypeAdapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, hairTypeArray);
        hairTypeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        hairSpinner.setAdapter(hairTypeAdapter);
    
        color = "Black";
    
        hairColor = (Spinner) findViewById(R.id.hairColor);
        hairColor.setOnItemSelectedListener(this);
        List<String> hairColorArray = new ArrayList<>();
        hairColorArray.add("Black");
        hairColorArray.add("Blonde");
        hairColorArray.add("Blue");
          (...)
        ArrayAdapter<String> hairColorAdapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, hairColorArray);
        hairColorAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        hairColor.setAdapter(hairColorAdapter);
    }
    
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id){
        if(parent.getId()==hairSpinner.getId())
            type = hairTypeArray.get(position);
        else
            color = hairColorArray.get(position);
    
        switch(type){
            case "Bald":
                imageView.setImageResource((R.drawable.sw_head));
                break;
            case "Female Short":
                if(color=="Black")
                    imageView.setImageResource(R.drawable.fhair_short_black);
                else if(color=="Blonde")
                    imageView.setImageResource(R.drawable.fhair_short_blonde);
                else if(color=="Blue")
                    imageView.setImageResource(R.drawable.fhair_short_blue);
                else if(color=="Brown")
                    (...)
                    break;
            case "Female Medium":
                if(color=="Black")
                    imageView.setImageResource(R.drawable.fhair_med_black);
                else if(color=="Blonde")
                    imageView.setImageResource(R.drawable.fhair_med_blonde);
                else if(color=="Blue")
                    imageView.setImageResource(R.drawable.fhair_med_blue);
                else if(color=="Brown")
                    (...)
                    break;
            case "Female Long":
                   (...)
            default:
                break;
        }
    }
    
    public void onNothingSelected(AdapterView<?> parent){
    
    }
    

    这是因为您正在使用==运算符比较两个字符串对象。若在两个字符串对象之间使用==运算符,它将检查两个字符串是否具有相同的引用,而不考虑它们所持有的值

    您需要这样进行比较:

    if(color.equalsIgnoreCase("Black"))
    

    这将检查字符串对象值而不是其引用

    正如@sasikumar所建议的那样,还应删除局部变量

    List<String> hairColorArray = new ArrayList<>();
    List<String> hairTypeArray = new ArrayList<String>();
    
    List hairoloraray=new ArrayList();
    List hairTypeArray=new ArrayList();
    
    这是因为您正在使用==运算符比较两个字符串对象。若在两个字符串对象之间使用==运算符,它将检查两个字符串是否具有相同的引用,而不考虑它们所持有的值

    您需要这样进行比较:

    if(color.equalsIgnoreCase("Black"))
    

    这将检查字符串对象值而不是其引用

    正如@sasikumar所建议的那样,还应删除局部变量

    List<String> hairColorArray = new ArrayList<>();
    List<String> hairTypeArray = new ArrayList<String>();
    
    List hairoloraray=new ArrayList();
    List hairTypeArray=new ArrayList();
    
    原因是您已在全局中初始化了数组列表

     private List<String> hairTypeArray = new ArrayList<String>();
     private List<String> hairColorArray = new ArrayList<String>();
    
    private List hairTypeArray=new ArrayList();
    private List hairolorarray=new ArrayList();
    
    因此,在oncreate方法之外,它只接受全局变量值。但是您只添加了本地arraylist oncreate方法的值。因此,请删除oncreate方法中的以下代码

    List<String> hairColorArray = new ArrayList<>();
    List<String> hairTypeArray = new ArrayList<String>();
    
    List hairoloraray=new ArrayList();
    List hairTypeArray=new ArrayList();
    
    原因是您已在全局中初始化了数组列表

     private List<String> hairTypeArray = new ArrayList<String>();
     private List<String> hairColorArray = new ArrayList<String>();
    
    private List hairTypeArray=new ArrayList();
    private List hairolorarray=new ArrayList();
    
    因此,在oncreate方法之外,它只接受全局变量值。但是您只添加了本地arraylist oncreate方法的值。因此,请删除oncreate方法中的以下代码

    List<String> hairColorArray = new ArrayList<>();
    List<String> hairTypeArray = new ArrayList<String>();
    
    List hairoloraray=new ArrayList();
    List hairTypeArray=new ArrayList();
    
    两个数组大小相同?@sasikumar是的,它们都有7个值。两个数组大小相同?@sasikumar是的,它们都有7个值。非常感谢!真不敢相信我没发现这个。我已经快一个月没做这个项目了,因为我就是想不出哪里出了问题。我欠你一大笔钱!非常感谢你!真不敢相信我没发现这个。我已经快一个月没做这个项目了,因为我就是想不出哪里出了问题。我欠你一大笔钱!