Getview с Gridview в зависимости от результата Asynctasks - PullRequest
1 голос
/ 07 августа 2020

У меня есть некоторая производительность в моем Android приложении. У меня есть Gridview с 4 столбцами, отображающими одновременно 8 элементов. Количество элементов, содержащихся в моей базе данных, составляет около 14000, поэтому, когда я прокручиваю до своего смещения (200 элементов), я читаю из БД еще 200 элементов и отбрасываю предыдущие 200. Эти элементы содержат много информации, например, наличие, цена, добавленные товары в корзину, общая стоимость добавленных товаров в корзину, растровые изображения и т. д. c. В методе Getview я могу загрузить часть этой информации, но большую ее часть мне нужно прочитать из локальной базы данных, и по этой причине я создал Asynctask, который запускаю внутри метода getView. Проблема в том, что я передаю держателя просмотра в asynctask, а в методе onPostExecute устанавливаю значения для держателя просмотра, что заставляет метод Getview вызывать снова и снова, что приводит к проблемам с производительностью.

Я также попытался добавить к элементу, который я храню в адаптере, флаг isFullyLoaded и проверил в Getview, было ли ifFullyLoaded истинным, если это было, я передал весь код onPostExecute из AsyncTask в это условие, в противном случае это было бы просто вызвать AsyncTask, а в onPostExecute он устанавливает для isFullyLoaded значение false. Но здесь есть еще одна проблема, потому что он будет использовать переработанное представление, что приведет к противоречивой информации.

Я ищу советы о том, как мне это сделать, чтобы повысить производительность при прокрутке.

...