我需要使用以下规则创建两个Spinners(都显示位置列表):
假设我有一套通用的位置,如下:
考虑这4个列表中的位置位于上面列出的4条独特路线中。
现在,我想填充Spinner-1中通用集中的所有位置(即所有4条路线上的国家/地区),这将作为“发件人”位置选择器。
一旦从Spinner-1中选择了一个位置,我想仅将Spinner-2(用作“To”位置选择器)填充到所选位置所在的特定路径上的那些位置。此外,我想从Spinner-1中排除选定的位置在Spinner-2中显示。
例如,如果从Spinner-1中选择墨西哥,Spinner-2应该显示美国,加拿大,牙买加......
编制此要求的最佳机制是什么?
答案 0 :(得分:1)
好的我现在已经完成了,主要逻辑是
onItemSelectedListener
方法内,删除所选元素并将适配器设置为第二个微调器。我们来看看
您有ArrayList
个这样的国家/地区
final ArrayList<String> countries = new ArrayList<>();
countries.add("India");
countries.add("Japan");
countries.add("China");
countries.add("South Korea");
countries.add("Nepal");
你有两个微调器(旋转器和旋转器2)
Spinner spinner1 = (Spinner) findViewById(R.id.mySpinner1);
final Spinner spinner2 = (Spinner) findViewById(R.id.mySpinner2); //It is final because it was accessed within inner class but if you don't want so then declare it as class level variable
您首先为spinner
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, countries);
spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner1.setAdapter(spinnerArrayAdapter);
在spinner
的onItemSelected中,从数组中删除所选元素,并将适配器设置为spinner
的第二个spinner2
spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
ArrayList<String> tempCounties = (ArrayList<String>) countries.clone();
tempCounties.remove(position);
ArrayAdapter<String> spinnerArrayAdapter2 = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item, tempCounties);
spinnerArrayAdapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner2.setAdapter(spinnerArrayAdapter2);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
答案 1 :(得分:0)
试试这个
String[] regionsArray;
List<String> regions;
Spinner spinner;
regionsArray=getResources().getStringArray(R.array.Country_array);
regions=new ArrayList<String>();
regions = new ArrayList<String>(Arrays.asList(regionsArray));
/* selected item will look like a spinner set from XML */
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, regions);
spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(spinnerArrayAdapter);
/* Your ARRAY Defined in xml file */
<string-array name="Country_array">
<item>India</item>
<item>Japan</item>
<item>China</item>
</string-array>