Не удается перезагрузить данные JSON - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь обновить "Гистограмму" из json на сервере. Но Android не может обновить эти данные JSON. Я попытался использовать runnable, но данные, которые были получены, остаются теми же. Я использую залп, чтобы получить данные с сервера, и я хочу, чтобы он перезагружался каждую 1 минуту .... А как сделать «гистограмму» в реальном времени для моего случая?

данные не обновлены:

screenshot

     @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {


        // Inflate the layout for this fragment
        View v = inflater.inflate(R.layout.fragment_apple, container, false);
        //declaretv
        tvdataTemp1 =(TextView) v.findViewById(R.id.dataSatu) ;
        tvdataTemp2 = (TextView) v.findViewById(R.id.dataDua);
        pd = new ProgressDialog(getContext());
        pd.setMessage("loading");


        // Log.d("array",Arrays.toString(fullData));
        chart = (BarChart) v.findViewById(R.id.chart);
        final Handler handler = new Handler();

        final Runnable r = new Runnable() {
            public void run() {
               load_data_from_server();
                handler.postDelayed(this, 1000);
            }
        };

        handler.postDelayed(r, 1000);
        return v;
    }

Загрузка из данных

     public void load_data_from_server() {
        pd.show();
        String url = "http://blablabla";
        xAxis1 = new ArrayList<>();
        yAxis = null;
        yValues = new ArrayList<BarEntry>();


        StringRequest stringRequest = new StringRequest(Request.Method.GET,
                url,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        Log.d("string",response);

                        try {

                            JSONArray jsonarray = new JSONArray(response);

                            for(int i=0; i < jsonarray.length(); i++) {

                                JSONObject jsonobject = jsonarray.getJSONObject(i);


                                String score = jsonobject.getString("y").trim();
                                String name = jsonobject.getString("pos_id").trim();
                                String temperature = jsonobject.getString("temperature").trim();

                                dataTemp.add(temperature);
                                xAxis1.add(name);

                                values = new BarEntry(Float.valueOf(score),i);
                                yValues.add(values);

                            }
                            tvdataTemp1.setText(dataTemp.get(0));
                            tvdataTemp2.setText(dataTemp.get(1));
                        } catch (JSONException e) {
                            e.printStackTrace();


                        }





                        BarDataSet barDataSet1 = new BarDataSet(yValues, "Point RainFall");
                        int[] colors = new int[] {Color.GREEN, Color.YELLOW, Color.GREEN, Color.BLUE, Color.GRAY, Color.BLACK};
                        barDataSet1.setColors(colors);



                        yAxis = new ArrayList<BarDataSet>();
                        yAxis.add(barDataSet1);
                        String names[]= xAxis1.toArray(new String[xAxis1.size()]);
                        data = new BarData(names,yAxis);
                        chart.setData(data);
                        chart.notifyDataSetChanged();
                        chart.setDescription("");
//                        chart.animateXY(2000, 2000);
                        chart.invalidate();
                        pd.hide();
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        if(error != null){

                            Toast.makeText(getActivity().getApplicationContext(), "Something went wrong.", Toast.LENGTH_LONG).show();
                            pd.hide();
                        }
                    }
                }

        );

        MySingleton.getInstance(getActivity().getApplicationContext()).addToRequestQueue(stringRequest);

    }

Пожалуйста, помогите мне, спасибо

1 Ответ

0 голосов
/ 03 июля 2018
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
  @Override
  public void run() {
               load_data_from_server();
  }
}, 1000);
...