Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
SparseArray<Boolean> seletedArray = new SparseArray<>();
. seletedArray.put(position, isSelected);
isSelected = seletedArray.get(position,false);
seletedArray.clear();
adapter.notifyDataSetChanged();
Вопрос следующий: почему вы не воспользовались просто дополнительным полем во ViewHolder для position. можно туда записывать позицию последней вьюхи? — это полезно для обработки кликов.
If you are writing an adapter it will always be more efficient to use the more specific change events if you can. Rely on notifyDataSetChanged() as a last resort.
<a href=""></>
Cсылка на такой холдер для каждого элемента сохраняется в корневом layout'е, используя метод setTag(int, Object) (с моей точки зрения тот ещё костыль).
Всё вроде здорово, но при отображении больших списков таких вот ViewHolder'ов создаётся достаточно много, что плохо влияет на размер используемой памяти.
при скроллинге ранее созданные элементы списков/таблиц переиспользуются
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Log.e(getClass().getName(), "position: " + position + "; " + ((convertView == null) ? "new one" : "reused"));
return super.getView(position, convertView, parent);
}
О RecyclerView и выделении элементов