adapter
2つの異なるアダプター(および)を備えた2つのスピナーがありadapter2
ます。最初のアダプター()の選択に基づいてadapter
、2番目のスピナー(adapter2
)にデータを入力しています。最初のスピナーでデータを変更した後、私は要求しましadapter2.notifyDataSetChanged();
たが、これは私の2番目のスピナーを更新していません。何か案は?
更新:新しいアダプターを呼び出して次のように設定すると、更新されます。
adapter2 = new ArrayAdapter<String> (this, android.R.layout.simple_spinner_item, objectList);
playerSpinner.setAdapter(adapter2);
しかし、これが正しい方法ではないと思います。
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;
}