Android: как сделать адаптер со стабильными идентификаторами?

Я создал собственный пользовательский адаптер, расширенный от BaseAdapter, для отображения списка и т. Д.

Я хочу, чтобы он поддерживал одиночный и множественный выбор, поэтому он должен иметь стабильные идентификаторы. Я проверил сADAPTER.hasStableIds() и результат ложный.

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

<code>public long getItemId(int position) {
   return (long) getItem(position).hashCode();
}
</code>

Есть идеи как это сделать? Спасибо!

Ответы на вопрос(1)

Решение Вопроса

hasStableIds вернуть истину.

Также данные на вашем адаптере должны либо переопределитьhashCode() или имеет какое-то поле id для возвратаgetItemId.

 22 апр. 2013 г., 14:53
hashCodes не являются уникальными, и реализация по умолчанию использует position как id. Как hashCode относится к идентификаторам элементов?
 11 апр. 2018 г., 05:47
Это окончательно сейчас. поэтому не могу переопределить это больше. Должен вызвать setHasStablesIds
 giorgiline22 апр. 2012 г., 16:30
Ничего себе, простое и легкое решение. Спасибо!
 04 янв. 2014 г., 23:09
@ Петр: Из того, что я понял, "стабильные идентификаторы" означает, что вы всегда можете идентифицировать свои объекты / строки, используя уникальный номер (иначе идентификаторы никогда не меняются в течение жизненного цикла вашего адаптера). Следовательно, точно так же, как вам нужны уникальные / не конфликтующие хеш-коды для HashMap, вы можете повторно использовать хеш-код здесь, в своем адаптере.
 09 янв. 2014 г., 08:20
Хеш-коды не обязательно должны быть уникальными. Уникальность хеш-кодов в одной и той же хеш-таблице (например, HashMap) является желательным свойством, но не обязательным требованием. Я до сих пор считаю, что переопределение hashCode () в этом случае не нужно.

Ваш ответ на вопрос