我知道有關於這個問題的帖子很多,我想我已經閱讀它們,但沒有幫助我......列表視圖不更新插入
我有一個活動的一個ListView它填充了一個遊標從一個數據庫,這一切工作正常。
然後我在屏幕上有一個按鈕,開始一個新的活動,用戶可以在列表中添加一個新的條目。
完成此操作後,將重新顯示第一個活動,但最近添加的條目不在列表中。如果我停下並重新啓動應用程序,則新條目將正確顯示。
我試過了幾個變化 - 沒有產生任何錯誤。
這是我的主要代碼:
public class FirstScreenActivity extends ListActivity {
public static String TAG = "My App:";
//This is the Adapter being used to display the list's data
public SimpleCursorAdapter vehAdapter;
static final String[] PROJECTION = new String[] {dbMain.ENTRY_ID, dbMain.VEHICLE_NAME};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Create/prepare database
mpgDBHelper mpgDBhelp = new mpgDBHelper(this.getBaseContext());
SQLiteDatabase mpgDB = mpgDBhelp.getWritableDatabase();
//Display vehicles available - first get any entries
Cursor mpgCur = mpgDB.query(dbMain.TABLE_NAME, PROJECTION, null, null, null, null, null);
// build a listView
String[] fromColumns = {dbMain.VEHICLE_NAME};
int[] toViews = {android.R.id.text1};
vehAdapter = new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_1, mpgCur, fromColumns, toViews, 0);
setListAdapter(vehAdapter);
setContentView(R.layout.activity_first_screen);
}
public void createNewVeh(View view) {
// create intent to start another activity
Intent newVehIntent = new Intent(this, createNewVehicleActivity.class);
startActivity(newVehIntent);
// I have tried putting the update lines here but also did not work
}
@Override
public void onResume() {
super.onResume();
Log.v(TAG, "In onResume...about to reset list");
// Refresh ListAdaptor
//vehAdapter.getCursor(); <-- this doesn't work either
vehAdapter.notifyDataSetChanged();
}
在對其他活動的代碼,我只是用:
finish();
...數據庫後插入。
我從onResume獲取日誌消息 - 有什麼建議嗎?
我認爲最好在startActivityForResult中更新onActivityResult方法而不是onResume()中的適配器。你試過了嗎? – Micer
我沒有 - 爲什麼更好? – Nelmo
方法'onResume()'也被稱爲鎖定和解鎖手機之後,這種情況下,當你不需要更新數據庫中的數據時,因爲它們可能沒有改變。 – Micer