添加值后,Android Array列表返回Null

时间:2015-11-24 06:42:32

标签: java android mpandroidchart

我正在尝试将值添加到数组列表以在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;

}

3 个答案:

答案 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}}方法