【问题标题】:using spinner to converter使用微调器到转换器
【发布时间】:2016-06-12 17:14:47
【问题描述】:

我正在创建转换器(距离)4 Android。我的想法是这样做:

  1. EditText - 用户输入值 f.e. 40
  2. 两个 Spinner - 第一个设置起始单元,第二个设置目标单元 f.e.第一 [厘米] 第二 [米]
  3. 带有结果的TextView
  4. 计算按钮

我做了计算值的函数,问题是如何选择单位 这是我的代码不起作用

spinnerP = (Spinner) findViewById(R.id.spinnerPocz);
    ArrayAdapter<CharSequence> adapterP = ArrayAdapter.createFromResource(this, R.array.odlegloscArray, R.layout.support_simple_spinner_dropdown_item);
    adapterP.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
    spinnerP.setAdapter(adapterP);

    spinnerP.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            //Toast.makeText(getBaseContext(), parent.getItemIdAtPosition(position) + " selected", Toast.LENGTH_LONG).show();
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });

    spinnerD = (Spinner) findViewById(R.id.spinnerDoc);
    ArrayAdapter<CharSequence> adapterD = ArrayAdapter.createFromResource(this, R.array.odlegloscArray, R.layout.support_simple_spinner_dropdown_item);
    adapterD.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
    spinnerD.setAdapter(adapterD);

    spinnerD.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            if (spinnerP.getItemAtPosition(position) == 0) {
                switch (position) {
                    case 0:
                        Toast.makeText(getApplicationContext(), "zmień wartość docelową", Toast.LENGTH_SHORT).show(); //units the same
                        break;
                    case 1:
                        btnOblicz.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                metryNaKm(); //meters to km
                            }
                        });
                        break;
                    case 2:
                        btnOblicz.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                metryNaCm(); //meters to cm
                            }
                        });
                        break;
                    case 3:
                        btnOblicz.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                metryNaCale(); //meters to inch
                            }
                        });
                        break;
//etc.
//then there is
else if (spinnerP.getItemAtPosition(position) == 1) {
                switch (position) {
                    case 0:
                        btnOblicz.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                kilometryNaM(); //km to meters
//etc

我想这样做很可怕,但我并不先进,我愿意接受建议

【问题讨论】:

    标签: java android spinner converter


    【解决方案1】:

    您应该做的是删除所有 OnItemselectedListener,并为您的按钮仅使用一个 OnClickListener。然后使用 getSelectedItemPosition。

    btnOblicz.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
    
              int selectedP = spinnerP.getSelectedItemPosition();
              int selectedD = spinnerD.getSelectedItemPosition();        
    
              switch(selectedP){
                 case 0:
                      switch(selectedD){
                           case 1:
                                convertFrom0to1();
                                break;
                           case 2:
                                convertFrom0to2();
                           ....
                       }
                       break;
                ....
               }
        }
    });
    

    【讨论】:

      猜你喜欢
      • 2016-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-15
      • 1970-01-01
      • 2013-01-12
      • 1970-01-01
      • 2016-11-02
      相关资源
      最近更新 更多