フォーラムの種類のアプリを開発しています。ユーザーは質問を投稿し、関連技術にタグを付けることができます。parseSnapshot(DataSnapshotスナップショット)を使用して子キーに基づいてRecyclerViewにアイテムをフィルタリングする
アプリにはFirebase database repoと似たモジュールとデータベースがあります。
私はそのタグに従って投稿をフィルタリングしたかったのです。サーバー側でのフィルタリングは複数のキー値では不可能なので、私はRecyclerViewに移入する前にそれをフィルタリングする方法にアプローチしなければなりませんでした。
私はここの質問の多くを言及し、この場合のPUFのanswerが関連を発見しました。
これは私が今ちょうど一つの値をしようと、次のロジック
@Override
protected Post parseSnapshot(DataSnapshot snapshot) {
if (snapshot.getValue(Post.class).tag.equals("#HTML")){
Log.d(TAG,"gotHTML Filtered Posts");
return snapshot.getValue(Post.class);
}
else
return super.parseSnapshot(snapshot);
}
とparseSnapshotをオーバーライドしています私のJSONツリー
"posts" : {
"-Kdb0BsybfpPtkAPRF1-" : {
"author" : "Anush Surendran",
"body" : "Test 1 ",
"commentCount" : 0,
"created" : 1487787053303,
"starCount" : 1,
"stars" : {
"v9KTwyI2DMbDgKHALgPSJEBK3fi1" : true
},
"tag" : "#CSS",
"title" : "Checking Post Time",
"uid" : "BvNgX2U5U4SriTWsoEtqbGYgOTw1"
},
"-Kdb2D9vD-3kHWpCMIFi" : {
"author" : "Anush Surendran",
"body" : "Abc",
"commentCount" : 0,
"created" : 1485000000000,
"starCount" : 0,
"tag" : "#HTML",
"title" : "Test 2",
"uid" : "BvNgX2U5U4SriTWsoEtqbGYgOTw1"
}
です。複数のタグ(HTML、CSS、JSなど)をフィルタリングするためにこれをループに入れます。
コードが正常に動作し、if条件が期待どおりに機能することがわかりました。
私は特定のタグとは柱がない場合、他の部分に戻るために何を見つけ出すことができませんでした。現在のelse部分はすべての投稿を返します。
これに比べてデータをフィルタリングする良い方法はありますか?
ご協力いただければ幸いです!
本当にありがとうございます!私は機能の要求にも従いました。このための回避策はありますか?私は1つのキー(データベースのタグ)に基づいてフィルタリングしたいからです。私はこの場合に役立つモデルを考えることができませんでした。 –
共有したJSONスニペットで、 'FirebaseDatabase.getInstance()。ref(" posts ")。orderByChild(" Tag ")。equalTo("#HTML ")'を単に照会することができます。しかし、各アイテムが複数のタグを持つことができる場合は、http://stackoverflow.com/questions/40656589/firebase-query-if-child-of-child-contains-a-value –