2012-04-15 38 views
0

当前我正在使用ListActivity。我使用游标从SQL获取数据,并根据SQL查询结果构建ListView。对于ListView中的每个对象,如果按下该对象(onListItemClick),它将更改光标将读取的SQL中的值,并打开一个新的意图(按下不同的对象将更改SQL表中的不同值) 。为了保持我的ListView最新的,我用有关ListActivity,游标和SQL数据更新的问题

//adapter is the SimpleCursorAdapter I use 
protected void onListItemClick(ListView l, View view, int position, long id) { 
    super.onListItemClick(l, view, position, id); 
    //change the data in sql 
    ... 
    //change the data end 
    adapter.changeCursor(dbAdapter.getResult(id)); 
    adapter.notifyDataSetChanged(); 
    //create intent here 
    //startActivity(intent) 
} 

问题是,如果我继续按相同的对象,离开了它的意图创造,它工作正常。但是,一旦我离开前一个意图后按下不同的对象,我的ListView就变为空了。例如,如果我按对象a,我输入意图a,然后离开意图a,回到列表视图(ListView现在很好),然后我按下对象b,我输入意图b。当我离开意图b时,ListView变为空。有没有人有任何关于这个问题的想法?谢谢。

回答

2

这听起来像你的一些数据被破坏。我认为,如果您将列表创建代码移动到onResume,您的问题将自行解决,因为列表将在每次回来时重新生成,而在onCreate中,只有在首次创建活动时才会执行。

一张图片胜过千言万语: Activity Lifecycle

+0

OMG它的作品!以前我只是尝试将更新函数移动到onresume,现在我将整个列表生成在那里,而且它正常工作!非常感谢! – JLTChiu 2012-04-15 05:31:35