我想从数据库中将我的数据显示到android spinner中。
我使用了两个旋转器.. 第二个微调器应该反射一次选择第一个微调器项目,每个东西都工作正常..数据加载到第二个微调器,但是当选择第二个微调器项目时不显示到第二个微调器。Spinner1 = (Spinner)findViewById(R.id.createProfileCitySpinnerId);
Spinner2 = (Spinner)findViewById(R.id.createProfileStateSpinnerId);
//for 1st spinner.....(working)
final List<String> list1 = new ArrayList<String>();
ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item,list1);
Spinner1.setAdapter(adapter1);
//for second spinner...
final List<String> list2 = new ArrayList<String>();
Spinner1.setOnItemSelectedListener(new OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id)
{
if(//some condition using id)
{
list2.add(stateCursor.getString(1));
}
}
@Override
public void onNothingSelected(AdapterView<?> parent)
{
}
});
//everything is working data is loading, but not display once item is selected on 2nd spinner
ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,list2);
stateSpinner.setAdapter(adapter2);
答案 0 :(得分:1)
致电adapter2.notifyDataSetChanged();
,例如
@Override
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id)
{
if(//some condition using id)
{
list2.add(stateCursor.getString(1));
adapter2.notifyDataSetChanged();
}
}
有关详细信息,请参阅http://developer.android.com/reference/android/widget/ArrayAdapter.html。
public void notifyDataSetChanged () Since: API Level 1
通知附加的观察者基础数据已经存在 已更改,任何反映数据集的视图都应自行刷新。
答案 1 :(得分:1)
您需要将元素直接添加到适配器(而不是list2),ArrayAdapter会保留自己的内部数据。在你的onItemSelected:
上试试这段代码adapter2.add(stateCursor.getString(1));
adapter2.notifyDataSetChanged();