마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

chart 그래프 ListView에서 갱신 방법

0 추천
ListView에 chart 그래프를 포함한뒤 그래프를 갱신하려고 합니다. 
ListView에 포함이 된상황이 아닐때는 갱신이 되나 포함하고 나면 갱신이 되지 않습니다. 
갱신할수 있는 방법이 없을까요??
 
ListView 를 생성한뒤 graph_func()을 호출하여 갱신합니다. 
 
소스 첨부합니다.
 
Activity.java

 test_adapter = new test_Adapter(this, R.layout.faultwaveform_two_item, arGraph_parameter);

        ListView Digital_list;
        Digital_list = (ListView)findViewById(R.id.FaultWaveForm_two_list);
        Digital_list.setAdapter(test_adapter);





private ArrayList<FaultWaveForm_Graph_Parameter> arGraph_parameter = new ArrayList<FaultWaveForm_Graph_Parameter>();
    private FaultWaveForm_Graph_Parameter FaultWaveForm_Graph_dtparameter;

    class test_Adapter extends BaseAdapter {
        Context con;
        LayoutInflater inflater;

        ArrayList<FaultWaveForm_Graph_Parameter> arD;

        int layout;

        public test_Adapter(Context context, int alayout, ArrayList<FaultWaveForm_Graph_Parameter> aarD) {
            this.con = context;
            this.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            this.layout = alayout;
            this.arD = aarD;

        }

        @Override
        public int getCount() {

            return arD.size();
        }

        @Override
        public String getItem(int position) {

            return arD.get(position).GraphValue;

        }

        @Override
        public long getItemId(int position) {
            // Log.d("kkh","getItemId : " + position);
            return position;
        }

        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {

            if (convertView == null) {
                convertView = inflater.inflate(layout,parent,false);
            }

            TextView groupbox = (TextView) convertView.findViewById(R.id.faultwaveform_groupbox);
            groupbox.setText(arD.get(position).GroupBox);

            TextView Unit = (TextView) convertView.findViewById(R.id.faultwaveform_labelUnit);
            Unit.setText(arD.get(position).Unit);

            EditText Value = (EditText) convertView.findViewById(R.id.faultwaveform_value);
            Value.setText(arD.get(position).Value);

            EditText Min = (EditText) convertView.findViewById(R.id.faultwaveform_min);
            Min.setText(arD.get(position).Min);

            EditText Max = (EditText) convertView.findViewById(R.id.faultwaveform_max);
            Max.setText(arD.get(position).Max);

            GraphicalView mChartView;
            LineGraph line;

            line = new LineGraph();
            mChartView = line.getView(FaultWaveForm_two.this);
            LinearLayout layout = (LinearLayout)convertView.findViewById(R.id.Trace_GraphView);
            layout.addView(mChartView, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,  ViewGroup.LayoutParams.FILL_PARENT));


            try {
                line.mRenderer.setXAxisMin(0);
                line.mRenderer.setXAxisMax(TOTAL_SAMPLES);

                line.mRenderer.setYAxisMax(Double.parseDouble(arD.get(position).Max));
                line.mRenderer.setYAxisMin(Double.parseDouble(arD.get(position).Min));

            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            line.addNewPoints(dataCnt, Double.valueOf(arD.get(position).GraphValue));//Add it to our graph
            mChartView.repaint();



            return convertView;
        }

    }

    int dataCnt = 0;
    private  void graph_func()
    {
        dataCnt = 0;
        for(int i = 0; i < TOTAL_SAMPLES; i++) {
            dataCnt++;
            arGraph_parameter.get(0).GraphValue = "1";
            test_adapter.notifyDataSetChanged();

            long oldtime, newtime;
            oldtime = System.currentTimeMillis();
            while(true)
            {
                newtime = System.currentTimeMillis();
                if(newtime - oldtime > 300) {
                    break;
                }
            }

        }
    }

 

LineGraph.java

public class LineGraph {

    private GraphicalView view;

    private TimeSeries dataset = new TimeSeries("Rain Fall");
    private XYMultipleSeriesDataset mDataset = new XYMultipleSeriesDataset();
    public XYSeriesRenderer renderer = new XYSeriesRenderer();
    public XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer();

    public LineGraph(){
        //Add single dataset to multiple dataset
        mDataset.addSeries(dataset);

        //customization time for line 1
        renderer.setColor(Color.BLACK);
        renderer.setPointStyle(PointStyle.POINT);
        renderer.setFillPoints(true);

        //Enable Zoom
        //mRenderer.setZoomButtonsVisible(true);
        /*mRenderer.setXTitle("Day #");
        mRenderer.setYTitle("CM in RainFall");*/


        //Add single renderer to multiple renderer
        mRenderer.setShowGrid(true);
        mRenderer.addSeriesRenderer(renderer);
    }

    public GraphicalView getView(Context context){
        view = ChartFactory.getLineChartView(context, mDataset, mRenderer);

        return view;
    }

    public void addNewPoints(double posX, double posY){
        dataset.add(posX, posY);
    }
}

 

 

깡갱 (660 포인트) 님이 2015년 5월 15일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...