我在我的活动中有两个旋转器,分别是类别和子类别.当我从类别旋转器中选择一些值时,我想在子类别旋转器中显示它的相关值/数据。我该怎么做?
public class SellActivity extends Activity {
private Spinner spinner1, spinner2;
private String selectedOption;
List<String> addItemList = new ArrayList<String>();
String[] elCat = new String[] {"Mobile", "Television", "Computers","Home Appliances","Games","Others"};
String[] veCat = new String[] {"Cars", "Buses", "Motorcycles","Others"};
String[] reCat = new String[] {"Apartment", "Plot", "Office","Paying Guest","Others"};
String[] hCat = new String[] {"Books", "Furniture", "Musical Instrument","Watches","Others"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sell);
spinner1 = (Spinner) findViewById(R.id.categorySellSpinner);
spinner2 = (Spinner) findViewById(R.id.subCategorySpinner);
selectedOption=String.valueOf(spinner1.getSelectedItem());
System.out.println(selectedOption);
spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
if(selectedOption.equals("Electronics"))
{
Collections.addAll(addItemList, elCat);
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(SellActivity.this,android.R.layout.simple_spinner_item, addItemList);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
dataAdapter.notifyDataSetChanged();
spinner2.setAdapter(dataAdapter);
}
else if(selectedOption.equals("Home - Lifestyle"))
{
Collections.addAll(addItemList, hCat);
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(SellActivity.this,android.R.layout.simple_spinner_item, addItemList);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
dataAdapter.notifyDataSetChanged();
spinner2.setAdapter(dataAdapter);
}
else if(selectedOption.equals("Vehicles"))
{
Collections.addAll(addItemList, veCat);
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(SellActivity.this,android.R.layout.simple_spinner_item, addItemList);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
dataAdapter.notifyDataSetChanged();
spinner2.setAdapter(dataAdapter);
}
else if(selectedOption.equals("Real Estate"))
{
Collections.addAll(addItemList, reCat);
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(SellActivity.this,android.R.layout.simple_spinner_item, addItemList);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
dataAdapter.notifyDataSetChanged();
spinner2.setAdapter(dataAdapter);
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
}}
这是整个密码。数据不是changing....plus旧数据添加到它中
发布于 2013-07-29 11:42:00
只要在任何情况下都这样做:-
Collections.addAll(addItemList, elCat);
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String(this,android.R.layout.simple_spinner_item, addItemList);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
dataAdapter.notifyDataSetChanged();
spinner2.setAdapter(dataAdapter);发布于 2013-07-29 12:08:48
旧数据被添加是因为您没有清除要传递到适配器的集合,只是在向其添加新数据之前清除集合的内容。
试试这个:-
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
addItemList.clear();
spinner2.setAdapter(null);
if(selectedOption.equals("Electronics"))
{
Collections.addAll(addItemList, elCat); 发布于 2013-07-29 12:24:54
您的代码有许多问题:
-- spinner1的数据丢失了。从您的代码中,应该是:{"Electronics", "Home - Lifestyle", "Vehicles","Real Estate"}
-- spinner1上没有设置适配器
-不需要创建和使用列表addItemList
-不需要使用selectedOption来检查所选的项目。onItemClick()在int arg2中为您提供选定的项
--将notifyDataSetChanged()调用到没有设置为任何视图的适配器,什么都不会做。
-数组可以直接传递给ArrayAdapters,而不需要将它们转储到ArrayList中
https://stackoverflow.com/questions/17922979
复制相似问题