Java AchartEngine库:如何在Android中重新绘制、重新绘制和刷新图表
我正在使用AchartEngine库制作图表。我有一个seekbar用于更改图表,该图表的值在seekbar中选择。每次我在搜索栏中选择一个,我的图表就不会重新绘制,即使我调用了Java AchartEngine库:如何在Android中重新绘制、重新绘制和刷新图表,java,android,charts,achartengine,Java,Android,Charts,Achartengine,我正在使用AchartEngine库制作图表。我有一个seekbar用于更改图表,该图表的值在seekbar中选择。每次我在搜索栏中选择一个,我的图表就不会重新绘制,即使我调用了mChartView.repaint()并且即使我调用了removeAllViews(),我也不能在删除图表之前删除它我的图表只需在最后一张图表上再加一张 这是我的代码: SeekTime.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
mChartView.repaint()代码>并且即使我调用了removeAllViews(),我也不能在删除图表之前删除它代码>我的图表只需在最后一张图表上再加一张
这是我的代码:
SeekTime.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStartTrackingTouch(SeekBar seekBar)
{
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
{
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
if (SeekTime.getProgress() <= 3){
SeekTime.setProgress(0);
period=7;}
if (SeekTime.getProgress() > 3 && SeekTime.getProgress() <= 8){
SeekTime.setProgress(5);
period =30;
}
if (SeekTime.getProgress() >8 && SeekTime.getProgress()<=13){
SeekTime.setProgress(10);
period = 90;
}
if (SeekTime.getProgress() >13 && SeekTime.getProgress()<=18){
SeekTime.setProgress(15);
period = 180;
}
if (SeekTime.getProgress() >18 && SeekTime.getProgress()<=23){
SeekTime.setProgress(20);
period = 270;
}
if (SeekTime.getProgress() >23){
SeekTime.setProgress(25);
period = 360;
}
String url = baseURL+"id="+strLjiId+"&nilai="+period;
new LoadData(url).execute();
}
});
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
if (mChartView == null) {
lnChart = (LinearLayout) findViewById(R.id.chart);
mChartView = ChartFactory.getLineChartView(this, mDataset, mRenderer);
lnChart.removeAllViews();
lnChart.addView(mChartView, 0, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
}
else {
mChartView.repaint();
}
}
private class LoadData extends AsyncTask<Void, Void, String>{
String url = "";
public LoadData(String url) {
// TODO Auto-generated constructor stub
this.url = url;
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
dialog = ProgressDialog.show(NABActivityDetail.this, "", "Please wait");
}
@Override
protected String doInBackground(Void... params) {
// TODO Auto-generated method stub
String result = "";
try {
result = Connection.get(url);
} catch (Exception e) {
// TODO: handle exception
result = "";
Log.d("TEST CHART", e.getMessage());
}
return result;
}
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
fetchResponse(result.replace("\n", "").trim());
dialog.dismiss();
}
}
private void fetchResponse(String result) {
// TODO Auto-generated method stub
if (!result.equals("")) {
try {
JSONArray jsonArray = new JSONArray(result);
NabDetail item = null;
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
item = new NabDetail(jsonObject.optString("lji_invest"),
jsonObject.optDouble("persen_hmin1"),
jsonObject.optDouble("lnu_nilai"),
jsonObject.optDouble("selisih"),
jsonObject.optDouble("persen_hke1"),
jsonObject.optString("tanggal"),
jsonObject.optString("lji_id")
);
listData.add(item);
}
renderChart(listData);
} catch (Exception e) {
}
}
}
private void renderChart(ArrayList<NabDetail> listData) {
// TODO Auto-generated method stub
String seriesTitle = "";
XYSeries series = new XYSeries(seriesTitle);
mDataset.addSeries(series);
mCurrentSeries = series;
XYSeriesRenderer renderer = new XYSeriesRenderer();
renderer.setFillBelowLine(true);
renderer.setFillBelowLineColor(Color.TRANSPARENT);
renderer.setColor(Color.YELLOW);
mRenderer.addSeriesRenderer(renderer);
renderer.setFillPoints(true);
mCurrentRenderer = renderer;
for (int i = 0; i < listData.size(); i++) {
mCurrentSeries.add(i,listData.get(i).getInuNilai()
);
}
if (mChartView != null) {
mChartView.repaint();
}
SeekTime.setonseekbarchaneglistener(新的onseekbarchaneglistener()){
@凌驾
开始跟踪触摸时的公共无效(SeekBar SeekBar)
{
}
@凌驾
public void onProgressChanged(SeekBar-SeekBar、int-progress、boolean-fromUser)
{
}
@凌驾
TopTrackingTouch(SeekBar SeekBar)上的公共无效{
如果(SeekTime.getProgress()3&&SeekTime.getProgress()8&&SeekTime.getProgress()13&&SeekTime.getProgress()18&&SeekTime.getProgress()23){
SeekTime.setProgress(25);
周期=360;
}
字符串url=baseURL+“id=“+strLjiId+”&nilai=“+period;
新建LoadData(url).execute();
}
});
}
@凌驾
受保护的void onResume(){
//TODO自动生成的方法存根
super.onResume();
如果(mChartView==null){
lnChart=(线性布局)findViewById(R.id.chart);
mChartView=ChartFactory.getLineChartView(this、mDataset、mrender);
lnChart.removeallview();
添加视图(mChartView,0,新的LayoutParams(LayoutParams.FILL\u父级,LayoutParams.FILL\u父级));
}
否则{
mChartView.repaint();
}
}
私有类LoadData扩展异步任务{
字符串url=“”;
公共加载数据(字符串url){
//TODO自动生成的构造函数存根
this.url=url;
}
@凌驾
受保护的void onPreExecute(){
//TODO自动生成的方法存根
super.onPreExecute();
dialog=ProgressDialog.show(NABActivityDetail.this,“,”请稍候“);
}
@凌驾
受保护字符串doInBackground(无效…参数){
//TODO自动生成的方法存根
字符串结果=”;
试一试{
结果=Connection.get(url);
}捕获(例外e){
//TODO:处理异常
结果=”;
Log.d(“测试图表”,例如getMessage());
}
返回结果;
}
@凌驾
受保护的void onPostExecute(字符串结果){
//TODO自动生成的方法存根
super.onPostExecute(结果);
fetchResponse(result.replace(“\n”和“).trim());
dialog.dismise();
}
}
私有void fetchResponse(字符串结果){
//TODO自动生成的方法存根
如果(!result.equals(“”){
试一试{
JSONArray JSONArray=新JSONArray(结果);
NabDetail项=null;
for(int i=0;i
我的代码是否有任何错误?或者是否有任何方法在重新绘制或刷新新图表之前删除该图表
这是我的图表:
重新绘制图表的方法是使用mChartView.repaint()
重新绘制图表。但是,为了避免出现问题,在设置图表时还必须执行renderer.setInScroll(true)
。可能重复的是…这是我的问题too@AoyamaNanami你是个连环杀手!我打电话给mChartView.repaint()但是我的图表不需要重新绘制,只需要在最后一张图表上重新绘制一张。你能告诉其他人修复它的方法吗?重新绘制图表的唯一方法就是我提到的方法。那就是销毁图表并重新创建新图表的方法吗?不,这是重新绘制图表的方法。