Сколете вашия cursor всеки път след употреба проблемът ви ще бъде решен
itemsCursor.close()
Тъй като не затваряте това, ресурсите на курсора не се освобождават поради тази причина, когато затворите своя db, получавате тази грешка.
Направете курсора си като глобална променлива, след това във вашия onDestroy
@Override
protected void onDestroy() {
super.onDestroy();
itemsCursor.close();
db.close();
}
И тъй като сега добавяте close изявление като последен израз на filldata метод, Adapter на listview не получава никакви данни като cursor вече е пуснат поради тази причина не получавате никакви данни в listview .