我知道有关于这个问题的帖子很多,我想我已经阅读它们,但没有帮助我......列表视图不更新插入
我有一个活动的一个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