如何更改微调器的数组源? (Android 工作室)
How to change the array source for a spinner? (Android Studio)
这个我以前也问过,但是太笼统了。
我有一个带有两个单选按钮和两个数组的 activity:String[] tickets;
有 3 个项目,String[] subscriptions;
有 5 个项目。顺便说一下,单选按钮在 radioGroup 中。
第一个单选按钮用于 String[] tickets;
,第二个单选按钮用于 String[] subscriptions;
当我检查第一个单选按钮时,我希望微调器由 String[] tickets
中的项目填充,而当我检查第二个单选按钮时,我希望微调器由 String[] subscriptions;
中的项目填充]
但是你是怎么做到的呢?我尝试使用一个空的临时数组并将其用作微调器的数组源。然后我会将这些数组之一放在空数组中。但是没有用。
编辑:
MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
String[] tickets = {"Ticket #1", "Ticket #2", "Ticket #3"};
String[] subscriptions = {"Sub #1", "Sub #2", "Sub #3", "Sub #4", "Sub #5"};
String[] tempArray;
Spinner spinner1;
RadioGroup radioGroup;
RadioButton radioButtonOption;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_third);
radioGroup = (RadioGroup)findViewById(R.id.radioGroup);
int selectedRadioButton = radioGroup.getCheckedRadioButtonId();
radioButtonOption = (RadioButton)findViewById(selectedRadioButton);
spinner1 = (Spinner)findViewById(R.id.spinner1);
radioButtonOption.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (radioButtonOption.getText().equals("Journeys/Tickets")) {
tempArray = tickets;
} else if (radioButtonOption.getText().equals("Subscription")) {
tempArray = subscriptions;
}
}
});
spinner1.setOnItemSelectedListener(this);
ArrayAdapter a1 = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, tempArray);
a1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner1.setAdapter(a1);
spinner1.setOnItemSelectedListener(this);
您可以在 radioGroup 上调用 OnCheckChangeListener,然后相应地设置微调器适配器。看例子:
a1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner1.setOnItemSelectedListener(this);
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener()
{
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch(checkedId){
case R.id.radio_button1:
a1 = ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item,tickets);
spinner1.setAdapter(a1);
break;
case R.id.radio_button2:
a1 = ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item,subscriptions);
spinner1.setAdapter(a1);
break;
}
}
});
试试这个
radioGroup = (RadioGroup)findViewById(R.id.radioGroup);
spinner1 = (Spinner)findViewById(R.id.spinner1);
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId)
{
case R.id.button_1:
a1 = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item ,tickets);
spinner1.setAdapter(a1);
break;
case R.id.button_2:
a1 = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item,subscriptions);
spinner1.setAdapter(a1);
break;
}
a1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
}
});
spinner1.setOnItemSelectedListener(this);
注意你需要声明ArrayAdapter a1;
这个我以前也问过,但是太笼统了。
我有一个带有两个单选按钮和两个数组的 activity:String[] tickets;
有 3 个项目,String[] subscriptions;
有 5 个项目。顺便说一下,单选按钮在 radioGroup 中。
第一个单选按钮用于 String[] tickets;
,第二个单选按钮用于 String[] subscriptions;
当我检查第一个单选按钮时,我希望微调器由 String[] tickets
中的项目填充,而当我检查第二个单选按钮时,我希望微调器由 String[] subscriptions;
中的项目填充]
但是你是怎么做到的呢?我尝试使用一个空的临时数组并将其用作微调器的数组源。然后我会将这些数组之一放在空数组中。但是没有用。
编辑:
MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
String[] tickets = {"Ticket #1", "Ticket #2", "Ticket #3"};
String[] subscriptions = {"Sub #1", "Sub #2", "Sub #3", "Sub #4", "Sub #5"};
String[] tempArray;
Spinner spinner1;
RadioGroup radioGroup;
RadioButton radioButtonOption;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_third);
radioGroup = (RadioGroup)findViewById(R.id.radioGroup);
int selectedRadioButton = radioGroup.getCheckedRadioButtonId();
radioButtonOption = (RadioButton)findViewById(selectedRadioButton);
spinner1 = (Spinner)findViewById(R.id.spinner1);
radioButtonOption.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (radioButtonOption.getText().equals("Journeys/Tickets")) {
tempArray = tickets;
} else if (radioButtonOption.getText().equals("Subscription")) {
tempArray = subscriptions;
}
}
});
spinner1.setOnItemSelectedListener(this);
ArrayAdapter a1 = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, tempArray);
a1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner1.setAdapter(a1);
spinner1.setOnItemSelectedListener(this);
您可以在 radioGroup 上调用 OnCheckChangeListener,然后相应地设置微调器适配器。看例子:
a1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner1.setOnItemSelectedListener(this);
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener()
{
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch(checkedId){
case R.id.radio_button1:
a1 = ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item,tickets);
spinner1.setAdapter(a1);
break;
case R.id.radio_button2:
a1 = ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item,subscriptions);
spinner1.setAdapter(a1);
break;
}
}
});
试试这个
radioGroup = (RadioGroup)findViewById(R.id.radioGroup);
spinner1 = (Spinner)findViewById(R.id.spinner1);
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId)
{
case R.id.button_1:
a1 = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item ,tickets);
spinner1.setAdapter(a1);
break;
case R.id.button_2:
a1 = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item,subscriptions);
spinner1.setAdapter(a1);
break;
}
a1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
}
});
spinner1.setOnItemSelectedListener(this);
注意你需要声明ArrayAdapter a1;