我正在为我的一个朋友创建一个应用程序(同时学习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) {
}
}
答案 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
}
});