【问题标题】:android with volley and JSON带有凌空和 JSON 的 android
【发布时间】:2023-03-04 02:54:01
【问题描述】:

最近我一直在开发我被分配到的应用程序。 我做了一个文本视图来显示我从树莓派的 JSON url 加载的一些数据(我知道这很愚蠢,但我不在乎)。 现在我想在称为“条形图”的东西中显示相同的数据。这是一个由 mikephil("https://github.com/PhilJay/MPAndroidChart" 如果你想知道的话) 制作的已知 api。 我似乎无法让它工作。我让应用程序运行,它可以显示图表,但它没有用数据填充它,它保持在 0.0...

现在是我的问题:谁能告诉我我做错了什么?

public class grafiek extends Activity {

//public static final String JSON_URL = "http://myip/test.php";
//public static String agv = "";
//public static String binnenschip = "";
/*public static String vrachtwagen;
public static String zeeschip;
public static String opslag;
public static String trein;
public static String diversen;*/

public static int agvz;
public static int binns;
/*public static int vracht;
public static int zschip;
public static int opsl;
public static int trei;
public static int divers;*/
//String aantalAgv = MainActivity.agv;
//String aantalBinnenschip = MainActivity.binnenschip;
//String aantalVrachtwagen=MainActivity.vrachtwagen;
//String aantalZeeschip=MainActivity.zeeschip;
//String aantalOpslag=MainActivity.opslag;
//String aantalTrein=MainActivity.trein;
//String aantalDiversen=MainActivity.diversen;
int counter = 0;
String loginURL="http://myip/test.php";
String datas = "";
RequestQueue requestQueue;
BarChart chart;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.grafiek);
    if(savedInstanceState!=null){
        Log.d("STATE", savedInstanceState.toString());
    }
    requestQueue = Volley.newRequestQueue(this);
    chart = (BarChart) findViewById(R.id.chart);
    JsonObjectRequest jor = new JsonObjectRequest(Request.Method.GET, loginURL, null,
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {

                    try{

                        JSONArray ja = response.getJSONArray("result");
                        for(int i=0; i < ja.length(); i++){

                            JSONObject jsonObject = ja.getJSONObject(i);

                            // int id = Integer.parseInt(jsonObject.optString("id").toString());


                            String agv = jsonObject.getString("agv");
                            String binnenschip = jsonObject.getString("binnenschip");

                            agvz = Integer.parseInt(agv);
                            binns = Integer.parseInt(binnenschip);


                        }

                    }
                    catch(JSONException e){
                        e.printStackTrace();
                    }
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.e("Volley","Error");

                }
            }
    );
    requestQueue.add(jor);
    ArrayList<BarEntry> entries = new ArrayList<>();
    entries.add(new BarEntry(agvz, 0));
    entries.add(new BarEntry(binns, 1));
    BarDataSet dataset = new BarDataSet(entries, "Aantal containers");

    ArrayList<String> labels = new ArrayList<String>();
    labels.add("AGV");
    labels.add("Binnenschip");

    BarChart chart = new BarChart(this);
    setContentView(chart);

    BarData data = new BarData(labels, dataset);
    chart.setData(data);

    chart.setDescription("Aantal containers per platform");

    dataset.setColors(ColorTemplate.COLORFUL_COLORS);
    if(counter == 0) {
        chart.animateY(2500);
        counter++;
    }

}

如果有人能帮我解决这个问题,那就太好了!

【问题讨论】:

    标签: php android mysql json android-volley


    【解决方案1】:

    由于 Volley 是异步的,所以你应该更新你的代码如下(请注意// MOVE HERE...):

               JsonObjectRequest jor = new JsonObjectRequest(Request.Method.GET, loginURL, null,
                    new Response.Listener<JSONObject>() {
                        @Override
                        public void onResponse(JSONObject response) {
    
                            try{
    
                                JSONArray ja = response.getJSONArray("result");
                                for(int i=0; i < ja.length(); i++){
    
                                    JSONObject jsonObject = ja.getJSONObject(i);
    
                                    // int id = Integer.parseInt(jsonObject.optString("id").toString());
    
    
                                    String agv = jsonObject.getString("agv");
                                    String binnenschip = jsonObject.getString("binnenschip");
    
                                    agvz = Integer.parseInt(agv);
                                    binns = Integer.parseInt(binnenschip);
    
                                    // MOVE HERE...
                                    ArrayList<BarEntry> entries = new ArrayList<>();
                                    entries.add(new BarEntry(agvz, 0));
                                    entries.add(new BarEntry(binns, 1));
                                    BarDataSet dataset = new BarDataSet(entries, "Aantal containers");
    
                                    ArrayList<String> labels = new ArrayList<String>();
                                    labels.add("AGV");
                                    labels.add("Binnenschip");
    
                                    BarChart chart = new BarChart(this);
                                    setContentView(chart);
    
                                    BarData data = new BarData(labels, dataset);
                                    chart.setData(data);
    
                                    chart.setDescription("Aantal containers per platform");
    
                                    dataset.setColors(ColorTemplate.COLORFUL_COLORS);
                                    if(counter == 0) {
                                        chart.animateY(2500);
                                        counter++;
                                    }
                                }
    
                            }
                            catch(JSONException e){
                                e.printStackTrace();
                            }
                        }
                    },
                    new Response.ErrorListener() {
                        @Override
                        public void onErrorResponse(VolleyError error) {
                            Log.e("Volley", "Error");
    
                        }
                    }
            );
            requestQueue.add(jor);
    

    【讨论】:

    • 条形图 = new BarChart(this);给我一个错误。
    • 条形图中的Barchart(android.context.context)不能应用到(匿名com.android.volley.Response.Listener)
    • 啊,你可以在RequestQueue requestQueue;声明的正下方创建Context mContext = this;,然后使用new BarChart(mContext);
    • 这对我有帮助!先生,你真棒!
    • 很高兴能帮上忙,编码愉快 :)
    猜你喜欢
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2016-12-27
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多