我正在制作一个非常简单的转储和显示应用程序。我希望看到我的新输入的数据显示在第一个标签上的列表中。但我不知道在哪里放置requery();当我从另一个选项卡添加新任务时,我会在哪里放置requery()以刷新列表?
这是第一个选项卡的代码。 (显示从数据库中的数据。)
public class ListTask extends ListActivity{
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.list_task);
SQLiteDatabase db = openOrCreateDatabase("db_alist", 0, null);
db.execSQL("CREATE TABLE IF NOT EXISTS tbl_alist (_id INTEGER PRIMARY KEY AUTOINCREMENT, task_name VARCHAR, task_date DATE, task_details VARCHAR);");
Cursor c = db.rawQuery("SELECT _id, task_name, task_date FROM tbl_alist", null);
while(c.moveToNext()){
c.getString(c.getColumnIndex("task_name"));
c.getString(c.getColumnIndex("task_date"));
}
db.close();
String[] displayfields = new String[] {"task_name", "task_date"};
int[] displayviews = new int[] {android.R.id.text1, android.R.id.text2};
SimpleCursorAdapter sca = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_2, c, displayfields, displayviews);
this.setListAdapter(sca);
}
@Override
public void onResume(){
super.onResume();
System.out.println("Resume?");
}
@Override
public void onPause(){
super.onPause();
System.out.println("Paused?");
}}
我试图做的(伪代码只)
public class{
Cursor c
public void onCreate(){
...
}
public void onResume(){
super.onResume();
c.requery();
}
}
和
public class{
SimpleCursorAdapter sca
public void onCreate(){
...
}
public void onResume(){
super.onResume();
sca.notifyDataSetChanged();
}
}
但都不起作用!有些东西还是错的。
如果我把Cursor c;在onCreate()之前,并在onResume()中放入c.requery(),该选项卡不会加载任何东西! – ice3d 2010-08-11 14:37:51
如果你不想让游标成为类字段而不是本地变量,那么你的SimpleCursorAdapter应该是。在这种情况下,你将在你的SimpleCursorAdapter上调用'notifyDataSetChanged()'。它会处理令人耳目一新的。 – codinguser 2010-08-11 15:09:29
试图将我的SimpleCursorAdapter作为局部变量,并在onResume中放入sca.notifyDataSetChanged(),但仍然没有任何反应。 – ice3d 2010-08-11 15:20:38