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);
}
}