使用一个HashTable<Integer,ArrayList<String>>
映射您RegionSpinner
和DistrictSpinner
值。
这HashTable
将对RegionSpinner
所选择的项目,如按键和ArrayList<String>
,供你DistrictSpinner
适配器作为值的位置。
然后,当你在RegionSpinner
选择一个项目,你设置DistrictSpinner
新FilterSpinnerAdapter
(扩展ArrayAdapter
的Adapter
),所以它的值动态改变。
,将给予新的适配器ArrayList<String>
将由您HashTable
根据你RegionSpinner
选择的位置被退回。
下面的代码:
public class SpinnerActivity extends Activity{
Spinner spinnerRegion, spinnerDistrict;
int selectionCount=0;
Hashtable<Integer,ArrayList<String>> spinnerValues;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_buttons_activity);
ArrayList<String> regions = new ArrayList<String>();
regions.add("Analamanga");
regions.add("Itasy");
regions.add("ThirdRegion");
ArrayList<String> analamangaDistricts = new ArrayList<String>();
analamangaDistricts.add("Boeny");
ArrayList<String> itasyDistricts = new ArrayList<String>();
itasyDistricts.add("Central");
ArrayList<String> thirdRegionDistricts = new ArrayList<String>();
thirdRegionDistricts.add("District1");
thirdRegionDistricts.add("District2");
thirdRegionDistricts.add("District3");
spinnerValues = new Hashtable<Integer, ArrayList<String>>();
spinnerValues.put(0, analamangaDistricts);
spinnerValues.put(1, itasyDistricts);
spinnerValues.put(2, thirdRegionDistricts);
spinnerRegion = (Spinner) findViewById(R.id.spinner_region);
if(spinnerRegion != null) {
FilterSpinnerAdapter regionadapter = new FilterSpinnerAdapter(getApplicationContext(), R.layout.layout_spinner_item, regions);
regionadapter.setDropDownViewResource(R.layout.layout_simple_spinner_dropdown_item);
spinnerRegion.setAdapter(regionadapter);
spinnerRegion.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int position, long itemId) {
FilterSpinnerAdapter newDistrictAdapter = new FilterSpinnerAdapter(getApplicationContext(), R.layout.layout_spinner_item, spinnerValues.get(position));
newDistrictAdapter.setDropDownViewResource(R.layout.layout_simple_spinner_dropdown_item);
spinnerDistrict.setAdapter(newDistrictAdapter);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) { }
});
}
spinnerDistrict = (Spinner) findViewById(R.id.spinner_district);
if(spinnerDistrict != null) {
FilterSpinnerAdapter districtadapter = new FilterSpinnerAdapter(getApplicationContext(), R.layout.layout_spinner_item, analamangaDistricts);
districtadapter.setDropDownViewResource(R.layout.layout_simple_spinner_dropdown_item);
spinnerDistrict.setAdapter(districtadapter);
spinnerDistrict.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int position, long itemId) {
//do whatever you want here
}
@Override
public void onNothingSelected(AdapterView<?> arg0) { }
});
}
}
public class FilterSpinnerAdapter extends ArrayAdapter<String> {
public FilterSpinnerAdapter(Context context, int resource, ArrayList<String> ys) {
super(context, resource, ys);
}
@Override
public int getCount() {
// - 1 so that the hint (last item) isn't shown
return super.getCount();
}
@Override
public String getItem(int position) {
return super.getItem(position);
}
@Override
public long getItemId(int position) {
return super.getItemId(position);
}
}
}
更新: R.layout.layout_spinner_item是在离心机上每个DROP_DOWN项目的布局。它包含一个简单的TextView
。 喜欢倾向:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/spinnerTitle" android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dp" android:textStyle="bold" />
我希望能对你有所帮助。 :D
您只需根据在Spinner 1上选择的值筛选字符串数组2,并在Spinner2上设置一个新的适配器。 – joao2fast4u
如何过滤第二个字符串数组? – pheromix
这取决于。你在每个数组中有什么值?你能举一个例子吗? – joao2fast4u