Я получаю список изображений из базы данных комнат. Это имеет неожиданное поведение. Время от времени я получаю странные изображения, но не могу понять, когда это произошло. Я думаю, что это связано с кешем, потому что иногда проблема решается, когда я очищаю кеш. Я получаю это https://yadi.sk/i/Frl9XX6P0zfvEg изображение вместо этого https://yadi.sk/i/wsVYcRwGzT92gw Спасибо за помощь).
fun deleteCache(context:Context) {
try
{
val dir = context.getCacheDir()
deleteDir(dir)
}
catch (e:Exception) {
e.printStackTrace()
}
}
fun deleteDir(dir:File):Boolean {
if (dir.exists()&& dir.isDirectory)
{
val children = dir.list()
for (i in children.indices)
{
val success = deleteDir(File(dir, children[i]))
if (!success)
{
return false
}
}
return dir.delete()
}
else if (dir.exists() && dir.isFile())
{
return dir.delete()
}
else
{
return false
}
}
Я добавил эту функцию в метод onCreate, чтобы удалить кэш, когда приложениезапускается с первого раза.
Здесь я вставляю данные в базу данных
`private fun initData (): ArrayList {
val data = ArrayList<GreetingModel>()
val gridModelGreetings1 =
GreetingModel("", false, R.drawable.greeting_1, "Доброе утро 1")
val gridModelGreetings2 =
GreetingModel("", false, R.drawable.img_3, "Доброе утро 1")
val gridModelGreetings3 =
GreetingModel("", false, R.drawable.img_grid2, "Доброе утро 1")
val listOfGridGreetings1 =
arrayListOf(
gridModelGreetings1,
gridModelGreetings2,
gridModelGreetings3
)
data.addAll(listOfGridGreetings1)
return data
}
Здесь я получаю данные из базы данных и передаю их адаптеру
when (imageListPosition) {
0 -> {
val allArticleLiveData: LiveData<List<GreetingModel>> =
helper.allGreetingsByDrawable("Доброе утро 1")
allArticleLiveData.observe(this, androidx.lifecycle.Observer { greetingModel ->
listOfGreetings.clear()
listOfGreetings.addAll(greetingModel)
greetingAdapter?.notifyDataSetChanged()
checkVisibility()
})
greetingAdapter = GridGreetingAdapter(this, listOfGreetings)
toolbar_text.text = "Доброе утро 1"
}