Я пытаюсь сделать простое представление рециркулятора, которое в настоящее время показывает только три представления карты, каждое с изображением, сдвинутым влево. Так как сейчас есть только три элемента, все виды карт видны на экране, и прокручивать нечего. Однако, когда я пытаюсь прокрутить, индикатор свечения полукруглой прокрутки вверху или внизу экрана обнаруживается и действует очень медленно и дергается. (Эта вещь: свиток-свечение )
Я обнаружил, что если я закомментирую строку:
holder.imageView.setImageResource(currentItem.getDrawableId());
в onBindViewHolder(MyHolder holder, int position)
, затем рывок исчезает, а индикатор свитка свечения действует плавно и плавно.
currentItem.getDrawableId()
просто ищет ресурс, сохраненный в 2d массиве, например:
private static int[][] resources = {{R.drawable.00, R.drawable.01}, {R.drawable.10, R.drawable.11}};
...
return resources[mX][mY];
Я также заметил, что если я просто заменю currentItem.getDrawableId()
жестко закодированным R.drawable.p00
, то он также будет работать плавно. Итак, я думаю, что что-то странное в том, что каждый предмет имеет свой ресурс ...? Или, может быть, поиск в 2d массиве идет медленно .....?
Наконец, у меня есть строки:
recyclerView.setHasFixedSize(true);
recyclerView.setItemViewCacheSize(20);
recyclerView.setDrawingCacheEnabled(true);
и они, похоже, ничего не делают для этого свитка.
Итак, что может быть причиной этого рывка, и как я могу это исправить?