的ListView与来自光标至极我通过在SimpleCursorAdapter的项目填充一个ListView,但每次我打开应用程序,这些项目是重 - 添加到列表视图不断增加。当我使用SimpleAdapter,我做这样的事情:项目正在复制我启动应用程序与SimpleCursorAdapter
static final ArrayList<HashMap<String, String>> foobar = new
ArrayList<HashMap<String,String>>();
SimpleAdapter adapter = new SimpleAdapter(this, foobar, R.layout.list_item, String[] from, int[] to);
setListAdapter(adapter);
做下一个,解决我的问题:
@Override
public void onDestroy(){
super.onDestroy();
foobar.removeAll(foobar);
}
但现在,我不想删除数据库的内容,所以如何解决它,如果我有一个SimpleCursorAdapter?像这样的:
> SimpleCursorAdapter myadapter = new SimpleCursorAdapter(this, R.layout.list_item, cursor, String[] from, int[] to);
我已经试过setListAdapter(空)或cursor.close(),和许多其他人,但没有效应...
现在,这些hapen当我退出该应用程序使用设备的“后退”按钮。如果我按下“主页”按钮,当我回来时,我拥有相同数量的项目。因此,每次用“返回”按钮退出时,列表都会重复。
解决感谢Kaediil的答案。评论线是我改进了。孔类:
public class DataBaseActivity extends ListActivity {
DataBaseMethods dbmet; //is the class that handle database and auxiliar methods working on it
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list);
dbmet = new DataBaseMethods(this);
Cursor mycursor= dbmet.getItems(); // 1. add new cursor
try{
if(!mycursor.moveToFirst()){ //2.check if there are items in the database
dbmet.addItems("Daniel","Son","Karate-kid");
dbmet.addItems("Silv", "Stalone", "Terminator");
dbmet.addItems("foo", "bar", "buz");
} //
showDatabaseContent();
}
finally{
dbmet.close();
}
}
public void showDatabaseContent(){
DataBaseMethods dbmet = new DataBaseMethods(this);
try{
Cursor cursor = dbmet.getItems();
SimpleCursorAdapter myadapter = new SimpleCursorAdapter(this, R.layout.item_list, cursor, dbmet.FROM, TO);
setListAdapter(myadapter);
}
finally{
dbmet.close();
}
}
你的问题不存在于你提交的代码中。我猜你的数据是“硬编码的”,你可能只是简单地将它保存到数据库中。看看你的数据库帮助器类或你在哪里调用它的方法在onCreate ..如果你找不到它发布的代码.. – Joe