凌空响应延迟
Volley responds with delay
我有一个数据库 (XAMPP)。
我能够获取值,但我认为获取值有 delay?
获取值是在 RecyclerView
的 onClickListener
上触发的。
class MyViewHolder extends RecyclerView.ViewHolder {
TextView title;
ImageView icon;
public MyViewHolder(View itemView) {
super(itemView);
title = (TextView) itemView.findViewById(R.id.listText);
icon = (ImageView) itemView.findViewById(R.id.listIcon);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getDBCommet();
//context.startActivity(new Intent(context, CategorySelected.class));
// Global.selectedPOI = title.getText().toString();
}
});
}
}
public void getDBCommet() {
requestQueue = Volley.newRequestQueue(context);
RequestHolderPOI jsonObjectRequest = new RequestHolderPOI(Request.Method.POST,
showUrl, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONArray jsonArray = response.getJSONArray("poi");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
Global.getCommentTitle.add(jsonObject.getString("title"));
Global.getCommentPicture.add("drawable://" + R.drawable.juandirection_placeholder);
Global.getComment.add(jsonObject.getString("comment"));
Global.getCommentDate.add(jsonObject.getString("date"));
Global.getCommentRating.add(Integer.parseInt(jsonObject.getString("rating")));
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
requestQueue.add(jsonObjectRequest);
Log.e("SIZE", "" + Global.getComment.size());
}
我的数据库只包含 2 行。
当我单击(一次)时,我的数组大小为 zero.
然后当我再次单击时,大小为 two.
这是示例日志。
11-15 07:19:53.298 2027-2027/? E/SIZE: 0
11-15 07:19:56.746 2027-2027/? E/SIZE: 2
11-15 07:19:57.765 2027-2027/? E/SIZE: 4
第一次点击的尺寸应该是两个。
因为 Volley 是异步的,所以您的问题的简单解决方案是您应该将 Log.e("SIZE", "" + Global.getComment.size());
移动到 onResponse
。希望这对您有所帮助!
我有一个数据库 (XAMPP)。
我能够获取值,但我认为获取值有 delay?
获取值是在 RecyclerView
的 onClickListener
上触发的。
class MyViewHolder extends RecyclerView.ViewHolder {
TextView title;
ImageView icon;
public MyViewHolder(View itemView) {
super(itemView);
title = (TextView) itemView.findViewById(R.id.listText);
icon = (ImageView) itemView.findViewById(R.id.listIcon);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getDBCommet();
//context.startActivity(new Intent(context, CategorySelected.class));
// Global.selectedPOI = title.getText().toString();
}
});
}
}
public void getDBCommet() {
requestQueue = Volley.newRequestQueue(context);
RequestHolderPOI jsonObjectRequest = new RequestHolderPOI(Request.Method.POST,
showUrl, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONArray jsonArray = response.getJSONArray("poi");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
Global.getCommentTitle.add(jsonObject.getString("title"));
Global.getCommentPicture.add("drawable://" + R.drawable.juandirection_placeholder);
Global.getComment.add(jsonObject.getString("comment"));
Global.getCommentDate.add(jsonObject.getString("date"));
Global.getCommentRating.add(Integer.parseInt(jsonObject.getString("rating")));
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
requestQueue.add(jsonObjectRequest);
Log.e("SIZE", "" + Global.getComment.size());
}
我的数据库只包含 2 行。
当我单击(一次)时,我的数组大小为 zero.
然后当我再次单击时,大小为 two.
这是示例日志。
11-15 07:19:53.298 2027-2027/? E/SIZE: 0
11-15 07:19:56.746 2027-2027/? E/SIZE: 2
11-15 07:19:57.765 2027-2027/? E/SIZE: 4
第一次点击的尺寸应该是两个。
因为 Volley 是异步的,所以您的问题的简单解决方案是您应该将 Log.e("SIZE", "" + Global.getComment.size());
移动到 onResponse
。希望这对您有所帮助!