Получение неправильных изображений из базы данных комнат - PullRequest
0 голосов
/ 21 октября 2019

Я получаю список изображений из базы данных комнат. Это имеет неожиданное поведение. Время от времени я получаю странные изображения, но не могу понять, когда это произошло. Я думаю, что это связано с кешем, потому что иногда проблема решается, когда я очищаю кеш. Я получаю это 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"

        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...