2013-03-24 109 views
0

我在我的應用程序中有兩個ArrayList;一個包含所有工作站的列表(AllStations),另一個包含用戶選擇的工作站列表(MyStations)。用戶將從微調器中選擇包含AllStations陣列列表中所有項目的電臺,並將它們添加到myStations陣列列表中。有一個列表視圖,顯示來自myStations arrayList的數據。從微調項添加項目到ListView不起作用

當用戶選擇要添加到mystations數組列表中的工作站時,它會將其添加到「myStations」,但列表視圖不會刷新。我試過adapter.notifyDataSetChanged()我花了幾天Google搜索等,並沒有找到任何理由爲什麼不刷新。誰能幫我?

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(); 
    } 

} 

回答

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但你ListView您設置了ArrayAdapter的新實例。在這種情況下,在myStationsNames上調用notifyDataSetChanged()將不會執行任何操作,因爲它不受小部件限制。你確定你不想寫:

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

乾杯Luksprog,工作! – 2013-03-24 11:59:16