2017-03-06 10 views
1

私はFirebaseとリストを操作しようとしています。私はFirebaseデータベースにListアイテムをアップロードしようとすると、それは箱から出して動作し、何の問題が直面されていないArrayListを拡張しながらFirebaseから値を取得

MyClass { 
    // other fields here 
    public static class List extends ArrayList<Foo> {}; 
} 

私のオブジェクトは、次のようなクラス拡張のArrayListが含まれています。これは

com.google.firebase.database.DatabaseExceptionを言って例外をスロー

MyClass mMyClass = dataSnapshot.getValue(MyClass.class); 

:私は、サーバーからこれらのList Sを取得しようとすると、

問題は、次のような、来ます:型java.util.ArrayListのオブジェクトをmypackage.MyClass型に変換できません。リスト

私は別のクラスから拡張するのではなく、ArrayList<Foo>に戻す必要があります。

問題なくキャストする方法はありますか? ありがとうございます。

答えて

1

ジェネリックコレクションとしてリストデータ読み取りにGenericTypeIndicatorを使用してみてください:

GenericTypeIndicator<MyClass.List> t = new GenericTypeIndicator<MyClass.List>() {}; 
MyClass.List mList = dataSnapshot.getValue(t); 

私はありませんがこれが内部クラスで動作するかどうかを確認してください。 Listは、独自のスタンドアロン型として宣言する必要があります。より多くの例については、this questionを参照してください。

+0

ありがとう!正確に私が探していたもの – Matteo

+0

あなたが読んでみたいクラスのメンバーであるジェネリックリストを使って、これがどのようにうまくいったのか不思議です。私は解決策を探しましたが、[答えられていないこの質問が見つかりました。](http://stackoverflow.com/q/41948309/213156) –

0

ArrayListとして値を取得して、クラスにキャストしようとしましたか? のような何か:特定の参照の配列リストを取得するための

MyClass mMyClass = (MyClass) dataSnapshot.getValue(ArrayList.class);

+0

私の問題は、クラス 'List'が 'getValue()'メソッドに渡しているクラスの内部にあることです。 – Matteo

0

ユーザーaddEventValueListener

+0

申し訳ありません、私は定型書だと思ったので、すでにValueEventListenerでこれを行っています。 – Matteo

+0

それから何が起こるのですか? –

+0

firebaseがArrayListをキャストしようとしているので、私はDatabaseExceptionを取得しています ArrayListを拡張しているListクラスに Matteo

関連する問題