2013-07-29 64 views
0

我在我的活动中有2个纺纱员作为类别和子类别。 当我从类别微调选择一些价值 我想要显示其相关的值/数据在子类别微调。 我该如何执行此操作?更改微调器数据,android?

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 

     } 
    }); 

} 

}

这里是整个代码。 数据是不会改变....加上旧数据添加到它

+0

什么是你所面临的问题? – Tarun

+0

值不会改变....我应该发布整个活动代码? – Wishy

+0

在每种情况的结尾尝试了'dataAdapter.notifyDataSetChanged()'? – LightYearsBehind

回答

2

只要做到这样在每一个if条件: -

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); 
+0

不工作兄 – Wishy

+0

我已更新代码请检查 – Wishy

1

旧数据获取添加,因为你不清除你的收藏传入适配器只是在向其中添加新数据之前清除集合的内容。

试试这个: -

@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); 
0

尝试重新初始化addItemList你的if语句之前内部onItemSelected到来以后。

2

你的代码有很多问题:

- 数据spinner1不见了。从你的代码,它应该是:{"Electronics", "Home - Lifestyle", "Vehicles","Real Estate"}

- spinner1没有一个适配器它设置

- 列表addItemList的创建和使用,不需要

- 的selectedOption使用情况检查对选定的项目不是必需的。 onItemClick()给你在int arg2 - 调用notifyDataSetChanged()到适配器没有设置为任何视图什么都不做。

- 阵列可通过直接ArrayAdapters,而不需要为他们倾倒到一个ArrayList

+0

thnx很多好友为您的建议....我做了这么多错误...现在我有更少的代码.. – Wishy