1

adapter2つの異なるアダプター(および)を備えた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;

}
4

0 に答える 0