Android:有没有办法根据来自其他 activity 的用户输入来切换微调器数组?
Android: Is there a way to switch the spinner array based on user input from other activity?
我是 Android 开发的初学者。我正在尝试为 class 项目制作一个应用程序。在注册(Registration activity)期间,用户可以从微调器中选择任何大陆。在另一个 activity 中,用户可以根据用户之前在注册时从微调器中选择的大洲来选择国家 activity。我的 string.xml 文件中已经有不同的数组。
我的想法是,在第二个activity中,如果用户选择了亚洲,这个布局将有旋转器显示亚洲国家。如果用户选择欧洲,则微调器将显示欧洲国家(来自 strings.xml 的数组)
我在 string.xml
上的数组示例
<string-array name="asia">
<item>"India"</item>
<item>"pakistan"</item>
<item>"China"</item>
<item>"Japan"</item>
<item>"Bangladesh"</item>
</string-array>
我还有一个用于欧洲和其他大陆的字符串数组。我的布局上有一个微调器,但我不知道如何根据第一个 activity 的用户输入来实现不同的数组。我还没有在微调器上分配任何 arrays/options。任何一种 help/suggestions/resource/advice 都非常感谢。
您可以在第二个 activity 中使用一个方法,用字符串数组更新微调器适配器。
或者你可以有一个 public 变量作为一个数组,它充当你选择的数组。该数组可以根据微调器的选定状态进行更新。然后,您可以从第二个 activity 访问此数组,并在设置微调器的适配器时使用它。
两者中的最后一个可能是最简单的。
这是您如何操作的示例。第一个 activity 包含一个微调器和一个将您带到第二个
的按钮
第一activity:
//The spinner in the first activity
Spinner spinner;
//the lists that we use in our spinner
public List<String> asiaList = new ArrayList<String>();
public List<String> europeList = new ArrayList<String>();
//Our selected array
public List<String> selectedArray = new ArrayList<String>();
public static MainActivity mainActivity;
@SuppressLint("ResourceType")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mainActivity = this;
//Getting the xml arrays into our lists
getListInfo(getResources().getStringArray(R.array.asia), asiaList);
getListInfo(getResources().getStringArray(R.array.europe), europeList);
//Your spinner
spinner = findViewById(R.id.spinner1);
// Spinner Drop down elements
List<String> categories = new ArrayList<String>();
//Items in your first spinner;
categories.add("Asia");
categories.add("Europe");
// Creating adapter for spinner
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, categories);
// Drop down layout style
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// attaching data adapter to spinner
spinner.setAdapter(dataAdapter);
//Isn't necessary and can be done by using spinner.getSelectedItemPosition()
// Spinner click listener
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//If asia is selected
if(position == 0){
selectedArray = asiaList;
}else{
selectedArray = europeList;
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
//function for your button to open next activity
public void OpenSecondActivity(View v){
Intent myIntent = new Intent(MainActivity.this, secondActivity.class);
startActivity(myIntent);
secondActivity.selectedArray = selectedArray;
}
//Put xml strings into your array lists;
public void getListInfo(String[] strings, List<String> list){
for (int i = 0; i < strings.length; i++) {
list.add(strings[i]);
}
}
第二个Activity:
//Spinner second class
Spinner spinner;
public static List<String> selectedArray = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
spinner = findViewById(R.id.spinner2);
// Creating adapter for spinner and also reference the current list from first activity to get right info
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, selectedArray);
// Drop down layout style
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// attaching data adapter to spinner
spinner.setAdapter(dataAdapter);
}
strings.xml:
<string-array name="asia">
<item>"India"</item>
<item>"pakistan"</item>
<item>"China"</item>
<item>"Japan"</item>
<item>"Bangladesh"</item>
</string-array>
<string-array name="europe">
<item>"Sweden"</item>
<item>"England"</item>
<item>"Spain"</item>
<item>"Norway"</item>
<item>"Germany"</item>
</string-array>
我是 Android 开发的初学者。我正在尝试为 class 项目制作一个应用程序。在注册(Registration activity)期间,用户可以从微调器中选择任何大陆。在另一个 activity 中,用户可以根据用户之前在注册时从微调器中选择的大洲来选择国家 activity。我的 string.xml 文件中已经有不同的数组。
我的想法是,在第二个activity中,如果用户选择了亚洲,这个布局将有旋转器显示亚洲国家。如果用户选择欧洲,则微调器将显示欧洲国家(来自 strings.xml 的数组) 我在 string.xml
上的数组示例 <string-array name="asia">
<item>"India"</item>
<item>"pakistan"</item>
<item>"China"</item>
<item>"Japan"</item>
<item>"Bangladesh"</item>
</string-array>
我还有一个用于欧洲和其他大陆的字符串数组。我的布局上有一个微调器,但我不知道如何根据第一个 activity 的用户输入来实现不同的数组。我还没有在微调器上分配任何 arrays/options。任何一种 help/suggestions/resource/advice 都非常感谢。
您可以在第二个 activity 中使用一个方法,用字符串数组更新微调器适配器。
或者你可以有一个 public 变量作为一个数组,它充当你选择的数组。该数组可以根据微调器的选定状态进行更新。然后,您可以从第二个 activity 访问此数组,并在设置微调器的适配器时使用它。
两者中的最后一个可能是最简单的。
这是您如何操作的示例。第一个 activity 包含一个微调器和一个将您带到第二个
的按钮第一activity:
//The spinner in the first activity
Spinner spinner;
//the lists that we use in our spinner
public List<String> asiaList = new ArrayList<String>();
public List<String> europeList = new ArrayList<String>();
//Our selected array
public List<String> selectedArray = new ArrayList<String>();
public static MainActivity mainActivity;
@SuppressLint("ResourceType")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mainActivity = this;
//Getting the xml arrays into our lists
getListInfo(getResources().getStringArray(R.array.asia), asiaList);
getListInfo(getResources().getStringArray(R.array.europe), europeList);
//Your spinner
spinner = findViewById(R.id.spinner1);
// Spinner Drop down elements
List<String> categories = new ArrayList<String>();
//Items in your first spinner;
categories.add("Asia");
categories.add("Europe");
// Creating adapter for spinner
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, categories);
// Drop down layout style
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// attaching data adapter to spinner
spinner.setAdapter(dataAdapter);
//Isn't necessary and can be done by using spinner.getSelectedItemPosition()
// Spinner click listener
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//If asia is selected
if(position == 0){
selectedArray = asiaList;
}else{
selectedArray = europeList;
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
//function for your button to open next activity
public void OpenSecondActivity(View v){
Intent myIntent = new Intent(MainActivity.this, secondActivity.class);
startActivity(myIntent);
secondActivity.selectedArray = selectedArray;
}
//Put xml strings into your array lists;
public void getListInfo(String[] strings, List<String> list){
for (int i = 0; i < strings.length; i++) {
list.add(strings[i]);
}
}
第二个Activity:
//Spinner second class
Spinner spinner;
public static List<String> selectedArray = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
spinner = findViewById(R.id.spinner2);
// Creating adapter for spinner and also reference the current list from first activity to get right info
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, selectedArray);
// Drop down layout style
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// attaching data adapter to spinner
spinner.setAdapter(dataAdapter);
}
strings.xml:
<string-array name="asia">
<item>"India"</item>
<item>"pakistan"</item>
<item>"China"</item>
<item>"Japan"</item>
<item>"Bangladesh"</item>
</string-array>
<string-array name="europe">
<item>"Sweden"</item>
<item>"England"</item>
<item>"Spain"</item>
<item>"Norway"</item>
<item>"Germany"</item>
</string-array>