2015-10-07 22 views
9

FirebaseListAdapterをFirebaseUIでサブクラス化すると、クリックしたアイテムのobjキーをどのように取得できますか?アイテムのFirebaseListAdapterからobjキーを取得する方法をクリックします。 FirebaseUI

FirebaseListAdapterにはitemIdを取得するが、longを返す次のメソッドがあります。しかし、デフォルトの文字列形式のオブジェクトキーが必要です。

public long getItemId(int i) { 
    return (long)this.mSnapshots.getItem(i).getKey().hashCode(); 
} 

答えて

30

FirebaseListAdapterあなたはいつもあなたと対話している項目のインデックス/位置を知っていることを前提としています。コレクションのビューはインデックスに基づいているため、Androidのコンテキストを考えると、これは意味があります。

位置を知ったら、adapter.getRef(position)に電話して、オブジェクトへのFirebaseリファレンスを取得できます。その参照で、getKey()と呼んでキーを取得することができます。私は最後の手段としてそれを行うことをお勧めしますが。

+1

ありがとうございます!はい、うまくいくでしょう。しかし、私は参照パスを常に作成する必要があるので、実際にはキーとIDをオブジェクト自体に格納し始め、非常に便利なパターンを見つけました。 – srinivas

+1

私たちはFirebaseUIチームでオブジェクト**に**参照**を保存することを議論してきましたが、今のところそれに反対しています。共通の基本クラスまたはインジェクタインターフェイスを必要とするオーバーヘッドは、汎用のユースケースの利点を上回るように見えました。もちろん、あなたが特定のユースケースを持っているならば、考慮は異なるかもしれません。キーの代わりに 'Firebase' refを保持することをお勧めします。 Refsは軽量であり、キーストリングだけに優れたタイプセーフなレイヤーを追加します。 –

+0

良い議論でなければなりません。私の場合は、多くのリレーショナル・ケースで理解しているように便利だと思われます。自分のコレクション内で互いに逆インデックスを作成する必要があるかもしれません。デフォルトでのfirebase参照はこの場合非常に役立ち、多分多くのモデリング要件をモデリングする際に頻繁に必要となるでしょう。 – srinivas

関連する問題