すべての「プロファイル」のリストを正常に取得し、それらを正しい方法で表示する 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"}