Я пытаюсь отобразить содержимое моей таблицы SQLite, используя SimpleAdapter и TableView.Он отлично работает при первом запуске, но когда я перезапускаю Activity, он добавляет таблицу еще раз в listView.Это происходит каждый раз, когда я запускаю намерение из моего главного меню.
Мне кажется, что SimpleAdapter сохраняется в последний раз и добавляется снова, когда намерение открыто из меню?
Может быть, есть способ сбрасывать адаптер каждый раз, когда он запускается?
Я новичок в программировании и надеюсь, что кто-нибудь мне поможет:)
Какой-то код:
static final ArrayList<HashMap<String,String>> results = new ArrayList<HashMap<String,String>>();
private String tableName = DBAdapter.tableName;
private SQLiteDatabase newDB;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
openAndQueryDatabase();
displayResultList();
}
private void displayResultList() {
ListAdapter adapter = new SimpleAdapter(
this,
results,
R.layout.liste,
new String[] {"Name","LastName","Age"},
new int[] {R.id.item_id,R.id.item_name,R.id.item_tid}
);
setListAdapter(adapter);
}
private void openAndQueryDatabase() {
try {
DBAdapter dbHelper = new DBAdapter(this.getApplicationContext());
newDB = dbHelper.getWritableDatabase();
Cursor c = newDB.rawQuery("SELECT Startnr, Navn, Tid FROM " +
tableName + " ORDER BY Startnr ASC" , null);
if (c != null ) {
if (c.moveToFirst()) {
do {
HashMap<String,String> list = new HashMap<String,String>();
String firstName = c.getString(c.getColumnIndex("Startnr"));
String lastName = c.getString(c.getColumnIndex("Navn"));
String age = c.getString(c.getColumnIndex("Tid"));
list.put("Name", "" + firstName);
list.put("LastName", "" + lastName);
list.put("Age", "" + age);
results.add(list);
}while (c.moveToNext());
}
}
} catch (SQLiteException se ) {
Log.e(getClass().getSimpleName(), "Could not create or Open the database");
} finally {
if (newDB != null)
newDB.close();
}
}