Colse il vostro cursor ogni volta dopo l'uso il tuo problema verrà risolto
itemsCursor.close()
Poiché non lo stai chiudendo, le risorse del cursore non vengono rilasciate per questo motivo quando chiudi il tuo db ricevi quell'errore.
Rendi il cursore come variabile globale quindi sul tuo onDestroy
@Override
protected void onDestroy() {
super.onDestroy();
itemsCursor.close();
db.close();
}
E ora stai aggiungendo close istruzione come ultima istruzione di filldata metodo, l'Adapter di listview non ottiene alcun dato come cursor è già stato rilasciato per questo motivo non stai ricevendo alcun dato in listview .