2014-04-15 160 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()命令以刷新列表视图。