2012-04-22 2 views
11

사용자 정의 어댑터를 BaseAdapter에서 확장하여 목록보기 등을 표시했습니다 ...Android : 안정적인 ID로 어댑터를 만드는 방법?

단일 및 다중 선택을 지원하기 때문에 안정적인 ID가 있어야합니다. 나는 ADAPTER.hasStableIds()으로 검사했고 그 결과는 거짓입니다.

나는이 방법을 재정의하여 마굿간 ID를 얻으려고합니다.

public long getItemId(int position) { 
    return (long) getItem(position).hashCode(); 
} 

어떻게 만들 수 있습니까? 덕분에 !

답변

18

hasStableIds을 True로 반환하십시오.

또한 어댑터의 데이터는 hashCode()을 무시하거나 getItemId에 반환되는 ID 필드가 있어야합니다.

+1

와우, 간단하고 쉬운 해결책. 감사! – giorgiline

+5

hashCodes는 고유하지 않으며 기본 구현에서는 id를 position으로 사용합니다. hashCode가 항목 식별자와 어떤 관련이 있습니까? –

+0

@Petr : "Stable Ids"는 고유 ID (일명 어댑터의 라이프 사이클 동안 Id가 변경되지 않음)를 사용하여 개체/행을 항상 식별 할 수 있음을 의미합니다. 따라서 동일한 방식으로 HashMap에 대해 고유 한/충돌하지 않는 hashCode가 필요하므로 어댑터에서 hashCode를 여기에서 다시 사용할 수 있습니다. –

관련 문제