0

すべての「プロファイル」のリストを正常に取得し、それらを正しい方法で表示する Web アプリ API を呼び出そうとしています (プロファイルの JsonArrayRequest)。ただし、プロファイル ID によって示されるプロファイルの「一致」を保持する連続した URL を呼び出すという問題があります。この API を呼び出して、各プロファイルの下に一致金額を表示しようとすると、おそらく半分の時間で動作します。私の問題は requestQueue の再利用にあるのではないかと思いますが、新しいものを作成しようとしましたが、まだ問題が残っています! どんな助けでも大歓迎です。

    import org.json.JSONArray;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Admin on 04-06-2015.
 */
public class GetSellerProfileFragment extends Fragment {
    private CustomListAdapter listAdapter;
    private static final String profileUrl = "http://172.16.98.152:3000/apip/sellers/profiles";
    private static final String matchCountUrl = "http://172.16.98.152:3000/apip/sellers/profiles/matches/counts";
    private ProgressDialog pDialog;
    private ListView listView;
    private List<BuyerProfile> buyersProfiles = new ArrayList<BuyerProfile>();
    private View root;
    private int matches;
    private String matchId;
    private FloatingActionButton fab;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        root = inflater.inflate(R.layout.fragment_get_seller_profiles, container, false);
        RecyclerView rv = (RecyclerView) root.findViewById(R.id.rv);
        rv.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL_LIST));
        LinearLayoutManager llm = new LinearLayoutManager(getActivity());
        rv.setLayoutManager(llm);
        rv.setItemAnimator(new DefaultItemAnimator());
        final CustomSellerProfileFragment recyclerAdapter = new CustomSellerProfileFragment(buyersProfiles);
        rv.setAdapter(recyclerAdapter);
        rv.setHasFixedSize(true);
        RequestQueue mRequestQueue;

        Cache cache = new DiskBasedCache(getActivity().getCacheDir(), 1024 * 1024);
        Cache backupCache = new DiskBasedCache(getActivity().getCacheDir(), 1024* 1024);

        Network network = new BasicNetwork(new HurlStack());
        mRequestQueue = new RequestQueue(cache, network);
        mRequestQueue.start();

        JsonArrayRequest profileRequest = new JsonArrayRequest(profileUrl,
                new Response.Listener<JSONArray>() {
                    @Override
                    public void onResponse(JSONArray response) {
                        // Parsing json
                        for (int i = 0; i < response.length(); i++) {
                            try {
                                JSONObject obj = response.getJSONObject(i);
                                BuyerProfile parsedProfile = new BuyerProfile();
                                parsedProfile.setBuyerProfTitle(obj.getString("title"));
                                parsedProfile.setDescription(obj.getString("description"));
                                parsedProfile.setLocations(obj.getString("locations"));
                                parsedProfile.setAssetTypes(obj.getString("asset_type"));
                                parsedProfile.setPropertyStatuses(obj.getString("property_status"));
                                parsedProfile.setProfileId(obj.getString("id"));
                                //parsedProfile.setMatchCount(matches);
                                //parsedProfile.setBuyerId("Select");
                                buyersProfiles.add(parsedProfile);
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                        }
                        recyclerAdapter.notifyDataSetChanged();
                        // notifying list adapter about data changes
                        // so that it renders the list view with updated data
                        //hidePDialog();
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                //Toast.makeText(selectBuyerProfile.this,"Error",Toast.LENGTH_LONG).show();

            }
        });

        JsonArrayRequest matchRequest = new JsonArrayRequest(matchCountUrl,
                new Response.Listener<JSONArray>() {
                    @Override
                    public void onResponse(JSONArray response) {
                        for (int i = 0; i < response.length(); i++) {
                            try {
                                JSONObject obj = response.getJSONObject(i);
                                for(int k = 0; i < buyersProfiles.size(); k++) {
                                    if(buyersProfiles.get(k).getProfileId() == obj.getString("id")) {
                                        buyersProfiles.get(k).setMatchCount(obj.getString("count"));
                                        System.out.println(obj.getString("count"));
                                    }
                                }
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                        }
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                //Toast.makeText(selectBuyerProfile.this,"Error",Toast.LENGTH_LONG).show();
                System.out.println(error);

            }
        });

        mRequestQueue.add(matchRequest);
        mRequestQueue.add(profileRequest);
        return root;
    }
}

以下は、Matchrequest API への応答の例です。

[{"id":1,"count":"1"}]

販売者プロファイル API からの応答は次のとおりです。

{"id":1,"title":"Test Seller","profile_status":"ACTIVE","description":"Testing Seller Profile","locations":"Mid-Wilshire","asset_type":"RETAIL","property_status":"COMING_SOON","role":"PRINCIPAL","investment_lower":"650000","investment_upper":"900000","seller_id":2,"created_on":"2016-06-14T18:09:27.411Z","updated_on":"2016-06-14T18:09:27.411Z","matching_opportunities":"1"}
4

1 に答える 1

0

回避策を見つけましたが、質問に対する直接的な回答ではありませんでした。わざわざ MATCH API を呼び出す代わりに、プロファイル API から直接プルして、JSON 配列の「matching_opportunities」部分を使用できることに気付きました。

于 2016-06-21T16:46:14.460 に答える