Coloca tu cursor cada vez que lo use, su problema se resolverá
itemsCursor.close()
Como no está cerrando esto, los recursos del cursor no se liberan por ese motivo cuando cierra su base de datos, recibe ese error.
Haga que su cursor sea una variable global y luego en su onDestroy
@Override
protected void onDestroy() {
super.onDestroy();
itemsCursor.close();
db.close();
}
Y como ahora está agregando close declaración como última declaración de filldata método, el Adapter de listview no obtiene ningún dato como cursor ya está publicado por ese motivo no obtiene ningún dato en listview .