当其他微调器更改时,保持微调器选择

时间:2016-05-23 08:07:53

标签: java android

我正在为我的一个朋友创建一个应用程序(同时学习Java / Android应用程序),他的客户将能够使用一系列旋转器来选择特定产品的价格。

我现在与旋转器有点紧张,我终于得到它们如何挂在一起我已经设法创建了一些代码,它将根据前一个微调器的选择设置微调器的选项。

这适用于在不同的微调器上进行选择。例如。 "单速"在微调器1上选择, " 4"在微调器2上选择, "钩"在微调器3上选择, 旋转器2​​重置。

一旦选择了另一个微调器,如何阻止动态微调器重置?

最终我会将所有微调器构建为动态的,因为不同的选择将决定应该有哪些选项。

提前致谢。 (欣赏它不是出色的写作,希望随着时间的推移会有所改进。)

    public class priceList extends Activity implements AdapterView.OnItemSelectedListener{

    Spinner capacity;
    Spinner speed;
    Spinner hoistSpeed;
    Spinner type;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_price_list);


        //Spinner for Capacity
        capacity = (Spinner) findViewById(R.id.capacityTextView);
        ArrayAdapter adapterCapa=ArrayAdapter.createFromResource(this,R.array.arrayCapacity, android.R.layout.simple_spinner_item);
        capacity.setAdapter(adapterCapa);
        capacity.setOnItemSelectedListener(this);

        //Spinner for the Speed
        speed = (Spinner) findViewById(R.id.speedTextView);
        ArrayAdapter adapterSpd = ArrayAdapter.createFromResource(this,R.array.arraySpeed, android.R.layout.simple_spinner_item);
        speed.setAdapter(adapterSpd);
        speed.setOnItemSelectedListener(this);


        //Spinner for the type
        type = (Spinner) findViewById(R.id.typeTextView);
        ArrayAdapter adapterBeam=ArrayAdapter.createFromResource(this,R.array.arrayType, android.R.layout.simple_spinner_item);
        type.setAdapter(adapterBeam);
        type.setOnItemSelectedListener(this);

    }

    @Override
    public void onItemSelected(AdapterView<?> adapterView, View view, int pos, long id) {

        //TextView myText = (TextView) view;
        //Toast.makeText(this, myText.getText(), Toast.LENGTH_SHORT).show();


        hoistSpeed = (Spinner) findViewById(R.id.hoistSpeedTextView);
        ArrayAdapter adapterTypeA=ArrayAdapter.createFromResource(this,R.array.arrayHoistSpeedSingle, android.R.layout.simple_spinner_item);
        hoistSpeed = (Spinner) findViewById(R.id.hoistSpeedTextView);
        ArrayAdapter adapterTypeB=ArrayAdapter.createFromResource(this,R.array.arrayHoistSpeedDouble, android.R.layout.simple_spinner_item);

        if(speed.getSelectedItem().toString().equals("Single Speed"))
        {

            hoistSpeed.setAdapter(adapterTypeA);

        }

        else if(speed.getSelectedItem().toString().equals("Dual Speed"))
        {

            hoistSpeed.setAdapter(adapterTypeB);

        }

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

    }

}

1 个答案:

答案 0 :(得分:1)

你的问题很混乱,也许你可以改写

但您可以根据当前微调器中选择的内容控制或设置下一个微调器,并进行适当的检查。

您可以直接编写setOnItemSelectedListener,以将逻辑彼此分开。

String[] speedArr = getResources().getStringArray(R.array.arraySpeed);

    speed.setAdapter(adapter);
            speed.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

                @Override
                public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
                     //Do your checks here, and set the next spinner, or reset the previous one.

                 //This automatically gets your selected value, so no need doing an if else check here again
                 String selectedValue = speedArr[position];
                }

                @Override
                public void onNothingSelected(AdapterView<?> arg0) {
                    // TODO Auto-generated method stub

                }
            });