我正在尝试将值添加到数组列表以在mpandroid图表中绘制xAxis值,但调试数组列表返回Null
虽然在forloop中添加它显示值但在forloop数组列表结束后为空帮助我
代码
private ArrayList<String> getXAxisValues() {
final ArrayList<String> xAxis = new ArrayList<>();
final Intent intent = getIntent();
final String getUserId = intent.getStringExtra("UserId");
new Thread(new Runnable() {
public void run() {
HttpRequest req = null;
try {
req = new HttpRequest("http://abc.sc.in/abc.php");
final String response = req.preparePost().withData("answerUserId="+getUserId).sendAndReadString();
JSONArray myObjects = null;
try {
myObjects = new JSONArray(response);
for (int ji = 1; ji < myObjects.length(); ji++) {
JSONObject jsonobject = myObjects.getJSONObject(ji);
final String Date = jsonobject.getString("date(answerDate)");
System.out.println("Date Response =====>: " + Date);
// The Values of Date (2 Dates [21,23]) here are shown while adding
xAxis.add(Date);
}
} catch (JSONException e) {
e.printStackTrace();
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
System.out.println("Here It shows [] after adding values ==============================>" + xAxis);
return xAxis;
}
答案 0 :(得分:2)
我不是Android大师,但你错过了这个概念。
您真的需要了解异步调用的工作原理。您正在打印值,然后回复响应。
在回复后尝试打印
for (int ji = 1; ji < myObjects.length(); ji++) {
JSONObject jsonobject = myObjects.getJSONObject(ji);
final String Date = jsonobject.getString("date(answerDate)");
System.out.println("Date Response =====>: " + Date);
// The Values of Date (2 Dates [21,23]) here are shown while adding
xAxis.add(Date);
System.out.println("Here It shows [] after adding values ==============================>" + xAxis);
}
答案 1 :(得分:2)
创建将返回AsynchTask
的{{1}}任务
像
arraylist
之后
public class DemoAsynch extends AsyncTask<Context, Integer, ArrayList<String>>{
}
在abc中,您将获得所有列表,并且无论您对asynch
需要什么,都会传递您的ID答案 2 :(得分:2)
虽然添加了forloop但它显示了值但是在forloop结束之后 数组列表为空
因为CUSTOM NM
方法在调用getXAxisValues()
而不是之后返回值,直到运行方法执行完成。
使用Thread.start()
和Callable
类在获取值之前获取运行Thread的状态,或者在Android中使用AsyncTask实现Future
和{ {1}}方法