0

Back4App(Parse) を使用してアプリを構築しています。

2 つのテーブル ポストとメディアがあります。post_id に対応するメディア (単一または複数) をフェッチする必要があります。

したがって、私は次のアプローチを使用しています。まず、Post テーブルからすべての投稿を取得し、ArrayList に保存しました。次に、for ループを使用して、特定の post_id を ArrayList から取得し、それをメディア クエリに送信して、その post_id のメディアを検索します。

しかし、私の問題は、クエリが非同期であるため、 for ループがクエリの前に実行され、クエリの結果が後でフェッチされることです。for ループは、ArrayList のサイズまでクエリの前に実行されます。この問題を修正するにはどうすればよいですか。

私は次のアプローチを使用しています。

 for (int i = 0; i < listUserPosts.size(); i++) {
 String postId = listUserPosts.get(i).getPostId();
 ParseQuery<ParseObject> query = ParseQuery.getQuery("Media");
 query.whereEqualTo("post_id", postId);
 query.findInBackground(new FindCallback<ParseObject>() {
                            @Override
                            public void done(List<ParseObject> objects,   ParseException e) {
                       if (objects.size() > 0) {
                       for (int j = 0; j < objects.size(); j++) 
                       {
                       ParseObject parseObject = objects.get(j);
                       //fetching data from parseObject
                       }
                       } 
                       }
                       });

どんな助けでも大歓迎です。

4

1 に答える 1