0

アプリに2つのArrayListがあります。1つはすべてのステーションのリストをAllStations含み()、もう1つはユーザーが選択したステーションのリストを含みます(MyStations)。ユーザーはスピナーからステーションを選択します。スピナーにはAllStationsアレイリストのすべてのアイテムが含まれており、それらにアレイリストが追加されますmyStationsmyStationsarrayList からのデータを表示するリストビューがあります。

ユーザーがアレイリストに追加するステーションを選択するとmystations、それは「myStations」に追加されますが、リストビューは更新されません。数日グーグルなどをしてみadapter.notifyDataSetChanged()ましたが、さっぱりしない理由は見つかりませんでした。誰か助けてもらえますか?

public class MyStations extends Activity{

    ListView personalStations;
    Spinner spinner;
    ArrayList<String>AllStations = new ArrayList<String>();
    ArrayList<String>MyStations = new ArrayList<String>();
    ArrayAdapter<String> StationNames;
    ArrayAdapter<String> myStationNames;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.my_stations);
        assignStations();
        spinner = (Spinner) findViewById(R.id.spinner1);
        StationNames = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, AllStations);
        spinner.setAdapter(StationNames);
        spinner.setOnItemSelectedListener(new OnItemSelectedListener()
        {
            public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3)
            {
                String selectedStation = spinner.getSelectedItem().toString();
                MyStations.add(selectedStation);
                myStationNames.notifyDataSetChanged();
                TextView txt1 = (TextView) findViewById(R.id.textView1);
                int size = MyStations.size();
                String sizes= String.valueOf(size);
                txt1.setText(sizes);


            }
            public void onNothingSelected(AdapterView<?> arg0)
            {
            // TODO Auto-generated method stub                 
            }
        });
        personalStations = (ListView) findViewById(R.id.myStnList);
        myStationNames = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, MyStations);
        personalStations.setAdapter(new ArrayAdapter<String>(MyStations.this, android.R.layout.simple_list_item_1, MyStations));
    }

    public void assignStations(){
        ImportData stationData = new ImportData();
        stationData.importStations();
        AllStations = stationData.getStationNames();
    }

}
4

1 に答える 1

1

あなたが書く:

personalStations = (ListView) findViewById(R.id.myStnList);
myStationNames = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, MyStations);
personalStations.setAdapter(new ArrayAdapter<String>(MyStations.this, android.R.layout.simple_list_item_1, MyStations));

私が見たところから、アダプタを作成して割り当てますが、に新しいインスタンスを設定しmyStationsNamesます。この場合、ウィジェットに関連付けられていないため、呼び出しは何もしません。書きたくなかったのですか?ListViewArrayAdapternotifyDataSetChanged()myStationsNames

personalStations = (ListView) findViewById(R.id.myStnList);
myStationNames = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, MyStations);
personalStations.setAdapter(myStationsNames);
于 2013-03-24T11:50:41.753 に答える