2011-09-16 21 views
0

私はListActivity継承クラスにネストされたSpinnerListnerクラスを持っています。私の目的は、ListActivityクラスによって実装されているCursorAdapterを更新することです。ここでスピナーの選択時にCursorAdapterを更新するには?

は私のコードです:

public class test extends ListActivity { 

    private testAdapter  adapter; 
    protected SQLiteDatabase  db; 
    protected Cursor    cursor; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     // Display wrapper 
     setContentView(R.layout.wrapper); 

     // Query Database 
     db = (new DatabaseHelper(this)).getWritableDatabase(); 
     cursor = getCursor(); 
     adapter = new testAdapter(this, cursor); 


     setListAdapter(adapter); 
    } 

    public class SpinnerListener implements OnItemSelectedListener { 

     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { 
      Toast.makeText(parent.getContext(), "The planet is " + parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show(); 

      String[] values = getResources().getStringArray(R.array.values); 

      SharedPreferences.Editor editor = pref.preferences.edit(); 
      editor.putString("planet", values[pos]); 
      editor.commit(); 

      // notifyDataSetChanged is not working 
      adapter.notifyDataSetChanged(); 

      // requery is not working either 
      cursor.requery(); 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> parent) { 
      // Do nothing. 
     } 
    } 
} 

両方のRequery()とnotifyDataSetChanged()が動作していません。私はここで間違って何をしていますか?

答えて

0

アダプタオブジェクトを再作成してsetListAdapterを呼び出すことで、この問題を解決しました。したがって、リフレッシュ関数は次のようになります。

public void refresh() 
    { 
     cursor = getCursor(); 
     adapter = new testAdapter(context, cursor); 

     setListAdapter(adapter); 
} 
関連する問題