2014-04-15 197 views
0

我有一個自定義列表視圖,顯示從SQLite數據庫提取我的內容。我也有能力編輯和更新任何給定行的單個值。我已成功實施更新。SQLite更新後刷新列表視圖 - 重新刷新

但是,在更新行時,listview不顯示更改。我應該改變活動,回去改變已經實施。根據我的理解,我需要重新查詢光標以同步數據更改。

我的問題是,我的列表視圖的內容可以根據微調值(所有,Catergory1,Catatergory2,等等),因此取決於微調值,我需要一個不同的光標查詢需要跟隨通過適配器上的notifyDataSetChanged()。

例如

假設我已經食品數據庫:

我可以編輯並顯示所有行時更新行值(所選擇的NO類別)。 但也 我可以編輯和更新行值選擇的類別是水果。


因此,依賴於微調器類別值,我將不得不運行特定的光標查詢。

我試圖通過一系列'if語句'調用我的原始類來確定微調器值,然後選擇正確的遊標來運行,但這需要該方法是靜態的,這是不允許的,當返回微調值。

請指教。

回答

0

我有一個代碼,可以幫助你,我用這個刷新城市的列表視圖根據在先前的微調選擇的狀態

final stateAdapter stateadapter = new stateAdapter(this, StateList); 
//customized adapter of state, it´s just an integer and a String 

    StateSpinner = (Spinner) findViewById(R.id.spinner1); 
    StateSpinner.setAdapter(stateadapter); 

    StateSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) { 
      State state = (State) StateSpinner.getSelectedItem(); 
          //Custom State Class, you may use your custom food class 
      ArrayList<City> CitiesList = new ArrayList<City>(); 

      try { 
          //your new SQLite query to populate the CitiesList 

       } 
      } catch (Exception ex) { 

      } 

      cityadapter = new cityAdapter(MyActivity.this, CitiesList); 
          //customized adapter for cities 
      CitySpinner = (Spinner) findViewById(R.id.spinner2); 
      CitySpinner.setAdapter(cityadapter); 

     } 

     @Override 
     public void onNothingSelected(AdapterView<?> parentView) { 
      // your code here 
     } 
    }); 
+0

我不認爲這適用於我的問題。我可以根據所選類別更改我的列表視圖讀數。我不知道如何在給定類別的數據庫更改後刷新列表視圖。 – user3408394

0

我發現重新查詢替代和簡單地更新陣列/ adapter在用給定值更改數據庫後手動運行notifyDataSetChanged()命令以刷新列表視圖。