我有一个应用程序,显示几家公司及其分支机构的列表。我需要显示公司及其分支机构的开放时间。我正在尝试使用volley从服务器获取数据,
String url = context.getString(site_url) + "branch_time.cfc?method=branchtime&branchid=" + bid;
StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
String MON_O = "";
String TUE_O = "";
String WED_O = "";
try {
JSONObject jsonObject = new JSONObject(response);
JSONArray result = jsonObject.getJSONArray("DATA");
final int numberOfItemsInBranch = result.length();
for (int i = 0; i < numberOfItemsInBranch; i++) {
JSONArray companyData = result.optJSONArray(i);
MON_O = companyData.getString(3);
TUE_O = companyData.getString(4);
WED_O = companyData.getString(5);
}
} catch (Exception e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(context, "Sorry, couldn't fetch business hours for" + companyTradeName + "Please try again later.", Toast.LENGTH_SHORT).show();
});
RequestQueue requestQueue = Volley.newRequestQueue(context);
requestQueue.add(stringRequest);
我需要使用上面的值将文本设置为文本视图,例如
timeStatus.setText(MON_O);
currentStatus.setText(TUE_O);
我面临的问题是当我在响应方法中设置文本视图的文本时,它只显示具有多个分支的公司的最后一个文本视图中的数据。
如果我在requestQueue.add(stringRequest)之后设置数据;我的回复是空的。
我不想在这里使用回调。有没有其他方法来实现这一目标。请帮助我,因为我被困在这几周。 我已经通过了很多链接,
还有其他几个链接,但无法解决我的问题。请帮忙。
修改
来自服务器的我的JSON响应,
{"COLUMNS": ["TIMEID","BRANCHID","COMPANYID","MON_O","TUE_O","WED_O","THU_O","FRI_O","SAT_O","SUN_O","MON_C","TUE_C","WED_C","THU_C","FRI_C","SAT_C","SUN_C","CREATDATE"],"DATA":[[507,1202,1187,"08:00","08:00","08:00","08:00","08:00","Closed","Closed","16:30","16:30","16:30","16:30","16:30","Closed","Closed","June, 02 2017 13:18:42"]]}
这里的问题是来自服务器的响应正常,但是当我循环数据时,只有最后一个值得到更新。有没有办法在不使用回调的情况下在外部使用响应方法的结果。如果我从响应方法中得到响应值,我认为它可以解决我的问题。
注意:我不能在这里使用listview。我所拥有的是7个文本视图集,在多个分支的情况下循环。