Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用动态数据绘制折线图?_Java_Android_Plot_Mpandroidchart - Fatal编程技术网

Java 用动态数据绘制折线图?

Java 用动态数据绘制折线图?,java,android,plot,mpandroidchart,Java,Android,Plot,Mpandroidchart,这是我第一次使用图形,但它不起作用。我能够绘制静态折线图,但无法使用动态数据绘制折线图。如何使用动态数据绘制图表 fragment\u仪表板 <com.github.mikephil.charting.charts.LineChart android:id="@+id/chart1" android:layout_width="match_parent" android:layout_height="m

这是我第一次使用图形,但它不起作用。我能够绘制静态折线图,但无法使用动态数据绘制折线图。如何使用动态数据绘制图表

fragment\u仪表板

        <com.github.mikephil.charting.charts.LineChart
            android:id="@+id/chart1"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
 public class Dashboard extends Fragment {

    ListView listViewNotice, listviewpendingbills;
    String Navigation_URL = "http://192.168.100.5:84/api/academics/getNotices";
    String Navigation_URL_BIlls = "http://192.168.100.5:84/Api/financeApi/getAllFees";
    String Navigation_URL_CHART = "http://192.168.100.5:84/api/academics/getSingleStudentsMarks";

    String access_token;
    String Notice, BillNumber, Status, AmountPaid, ReceiptIssueDate;
    String master_id;
    TextView pendingbills, NoNotice;
    BarChart lineChart;


    LineChart chart;


    private static final String TAG = "Test";


    ArrayList<Entry> entries = new ArrayList<>();
    LineDataSet set = new LineDataSet(entries, "Wow");
    LineData data = new LineData(set);
    ArrayList<Object> labels = new ArrayList<>();


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_dashboard, container, false);
        // getActivity().setTitle("St. Xavier's High School");
        setHasOptionsMenu(true);

        listViewNotice = (ListView) view.findViewById(R.id.list_student_notice_dashboard);
        listviewpendingbills = (ListView) view.findViewById(R.id.student_dashboard_pendingbills);
        pendingbills = (TextView) view.findViewById(R.id.textpendingbills);
        NoNotice = (TextView) view.findViewById(R.id.textnoticedashboard);
        //  lineChart = (BarChart) view.findViewById(R.id.chart1);
        chart = (LineChart) view.findViewById(R.id.chart1);


        SessionManagement session = new SessionManagement(getContext());
        session.checkLogin();
        access_token = session.getAccesstToken();
        master_id = session.getMasterId();
        makeJsonObjectRequest();
        makeJsonObjectRequestBills();
        makeJsonObjectRequestGraph();
        return view;
    }
  private void makeJsonObjectRequestGraph() {

        RequestQueue requestQueue = Volley.newRequestQueue(getContext());
        String URL1 = Navigation_URL_CHART + "?StdID=" + master_id;
        StringRequest stringRequest = new StringRequest(Request.Method.GET, URL1,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        try {


                            JSONArray jArray = new JSONArray(response);
                            for (int i = 0; i < jArray.length(); i++) {
                                JSONObject jsonObject = jArray.getJSONObject(i);
                                String Marks = jsonObject.getString("Marks");
                                String examDescription = jsonObject.getString("examDescription");

                                if (examDescription == "First Term") {

                                    entries.add(new BarEntry(Float.parseFloat(Marks), i));
                                }


                            }


                            chart.notifyDataSetChanged();
                            chart.invalidate();
                            set = new LineDataSet(entries, "Wow");
                            //data = new LineData(labels,set);
                            chart.setData(data);

                            setListViewHeightBasedOnChildren(listviewpendingbills);


                        } catch (JSONException e) {
                            Toast.makeText(getContext(), "Fetch failed!", Toast.LENGTH_SHORT).show();
                            e.printStackTrace();
                        }
                    }

                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Toast.makeText(getContext(), error.toString(), LENGTH_LONG).show();
            }
        }) {

            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                Map<String, String> headers = new HashMap<String, String>();
                headers.put("Authorization", "Bearer " + access_token);
                headers.put("Content-Type", "application/x-www-form-urlencoded");
                return headers;
            }
/*
            @Override
            protected Map<String, String> getParams() throws com.android.volley.AuthFailureError {
                Map<String, String> map = new HashMap<String, String>();

                map.put("id", master_id);
                map.put("accessID", accessID);
                map.put("currentUser", master_id);
                return map;

            } */
        };


        requestQueue.add(stringRequest);

    }


    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        // TODO Auto-generated method stub
        super.onCreateOptionsMenu(menu, inflater);
        inflater.inflate(R.menu.dashboard, menu);
    }


    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // handle item selection
        switch (item.getItemId()) {
            case R.id.action_settings:
                // do s.th.
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

    public static void setListViewHeightBasedOnChildren(ListView listView) {
        ListAdapter listAdapter = listView.getAdapter();
        if (listAdapter == null) {
            // pre-condition
            return;
        }

        int totalHeight = 0;
        int desiredWidth = View.MeasureSpec.makeMeasureSpec(listView.getWidth(), View.MeasureSpec.AT_MOST);
        for (int i = 0; i < listAdapter.getCount(); i++) {
            View listItem = listAdapter.getView(i, null, listView);
            listItem.measure(desiredWidth, View.MeasureSpec.UNSPECIFIED);
            totalHeight += listItem.getMeasuredHeight();
        }

        ViewGroup.LayoutParams params = listView.getLayoutParams();
        params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
        listView.setLayoutParams(params);
        listView.requestLayout();
    }
}
如何使用MPAndroidChart在Android中绘制动态数据


将ArrayList条目、LineDataSet、LineData设置为全局,在onCreate中对其进行初始化,然后在for循环中添加以下代码

 if(examDescription.equals("First Term")){
 entries.add(new BarEntry(Marks, i));}
在for循环之后执行此操作

     chart.notifyDataSetChanged();
     chart.invalidate();
     set = new LineDataSet(entries, "Wow");
     data = new LineData(labels,set);
     chart.setData(data);

阅读它,我提到了na。您的解析json foor循环,我编辑了我的答案..check.comment您的静态内容okaygetting错误Utils未初始化。在调用Utils.convertDpToPixel(…)之前,至少需要调用Utils.init(…)一次。否则转换不会发生。entries.add(newbarentry(Marks,i));在这里,标记需要转换为float。什么是输出,或者你得到什么让我们看看。
     chart.notifyDataSetChanged();
     chart.invalidate();
     set = new LineDataSet(entries, "Wow");
     data = new LineData(labels,set);
     chart.setData(data);