2012-04-22 4 views
11

私は自分のカスタムアダプターをBaseAdapterから拡張してリストビューなどを表示しました...Android:安定したIDを持つアダプタを作成するには?

私はそれが単一および複数の選択をサポートしたいので、安定したIDが必要です。私はADAPTER.hasStableIds()とチェックして、結果はfalseです。

このメソッドをオーバーライドして、運がない厩舎IDを取得しようとしました。

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

どうすればいいですか?感謝! ありがとう!

答えて

18

hasStableIdsをtrueに戻すと上書きされます。

また、アダプタのデータは、hashCode()を上書きするか、getItemIdに返されるべき種類のIDフィールドが必要です。

+1

うわー、簡単で簡単な解決策。ありがとう! – giorgiline

+5

hashCodesは一意ではなく、デフォルトの実装ではpositionをidとして使用します。 hashCodeが項目識別子にどのように関係していますか? –

+0

@Petr:「安定したID」とは、一意の番号(アダプタのライフサイクル中にIDが変わることはありません)を使用してオブジェクト/行を常に識別できることを意味します。 したがって、同じ方法で、HashMapに一意/違反しないhashCodeが必要な場合は、アダプタでhashCodeを再利用できます。 –

関連する問題