的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