I have 2 spinners with two different adapter's (adapter
and adapter2
). Based on my selection of my first adapter (adapter
), I am populating my second spinner (adapter2
). After changing the data in the first spinner I called for adapter2.notifyDataSetChanged();
but this is not updating my second spinner. Any ideas?
UPDATE: It is updating if I call for a new adapter and set it like this:
adapter2 = new ArrayAdapter<String> (this, android.R.layout.simple_spinner_item, objectList);
playerSpinner.setAdapter(adapter2);
but I don't think this is the correct way of doing this....
ArrayAdapter<String> adapter = new ArrayAdapter<String> (this, android.R.layout.simple_spinner_item, sDefaultPositions);
positionSpinner.setAdapter(adapter);
adapter2 = new ArrayAdapter<String> (this, android.R.layout.simple_spinner_item, objectList);
playerSpinner.setAdapter(adapter2);
positionSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View arg1, int pos, long arg3)
{
changeSpinnerView(parent.getItemAtPosition(pos).toString());
Log.i("YourTeam", "ItemSlected"+objectList.toString());
adapter2.notifyDataSetChanged();
}
});
private void changeSpinnerView(String position)
{
objectList = getResults(playerkey);
Collections.sort(objectList);
}
public ArrayList<String> getResults(int key)
{
BLLPlayer playerdatasource = new BLLPlayer(this);
playerdatasource.open();
ArrayList<PlayerBean> resultList = new ArrayList<PlayerBean>();
resultList = (ArrayList<PlayerBean>) playerdatasource.getAllFunctionList(key);
playerdatasource.close();
return getPlayerName(resultList);
}
private ArrayList<String> getPlayerName(ArrayList<PlayerBean> resultList)
{
ArrayList<String> nameList = new ArrayList<String>();
for (int iIndex = 0; iIndex < resultList.size(); iIndex++)
{
String beanName = resultList.get(iIndex).getName();
if (beanName.equals("1"))
{
beanName = "";
}
else
{
nameList.add(beanName);
}
}
return nameList;
}