Android 第一次正确渲染Achartenge,但当我删除它并将一个具有不同数据点的渲染添加到linearlayout时,预设会消失
我正在创建一个图表来显示一年中不同日子的心情。它在第一次正确渲染。但是,当我按下“下一天”和“上一天”的按钮时,数据点输入正确,但图表预设不正确。例如,图表不再是可点击的,我也不能再平移了(我以前两个都可以)。下面是代码。我做错了什么Android 第一次正确渲染Achartenge,但当我删除它并将一个具有不同数据点的渲染添加到linearlayout时,预设会消失,android,achartengine,Android,Achartengine,我正在创建一个图表来显示一年中不同日子的心情。它在第一次正确渲染。但是,当我按下“下一天”和“上一天”的按钮时,数据点输入正确,但图表预设不正确。例如,图表不再是可点击的,我也不能再平移了(我以前两个都可以)。下面是代码。我做错了什么 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { su
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
super.onCreateView(inflater, container, savedInstanceState);
mContext = this.getActivity();
mDbHelper=new CalendarDbAdapter(mContext);
mDbHelper.open();
View view = inflater.inflate(R.layout.activity_graph, container, false);
Button next = (Button) view.findViewById(R.id.next);
Button previous = (Button) view.findViewById(R.id.previous);
Day = cal.get(Calendar.DAY_OF_YEAR);
Year = cal.get(Calendar.YEAR);
chartView = generate(Day, Year);
layout = (LinearLayout) view.findViewById(R.id.graph);
layout.addView(chartView);
next.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View arg0)
{
Day++;
if (Day > 365)
{
Day = 0;
Year++;
}
layout.removeView(chartView);
chartView = generate(Day, Year);
layout.addView(chartView);
}
});
previous.setOnClickListener(new OnClickListener()
{
public void onClick(View arg0)
{
Day--;
if (Day < 0)
{
Day = 0;
Year--;
}
layout.removeView(chartView);
chartView = generate(Day, Year);
layout.addView(chartView);
}
});
chartView.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View arg0) {
SeriesSelection seriesSelection = chartView.getCurrentSeriesAndPoint();
Log.e("series select is",""+seriesSelection);
Log.e("I was","clicked");
}
});
return view;
}
@Override
public void onDestroy()
{
super.onDestroy();
mDbHelper.close();
}
public GraphicalView generate(long Day, long Year)
{
Cursor calendar = mDbHelper.fetchDay(Year, Day);
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, (int)Year);
cal.set(Calendar.DAY_OF_YEAR, (int)Day);
Log.e("Day is",""+Day);
Date date = cal.getTime();
String sDate = new SimpleDateFormat("MM/dd/yyyy").format(date);
minutes.clear();
mood.clear();
while (calendar.moveToNext())
{
Hour = Float.valueOf((calendar.getInt(calendar.getColumnIndexOrThrow(CalendarDbAdapter.COLUMN_NAME_MINUTES))))/60;
minutes.add(Hour);
mood.add(calendar.getInt(calendar.getColumnIndexOrThrow(CalendarDbAdapter.COLUMN_NAME_FEELING)));
}
if (! calendar.moveToFirst())
{
Toast.makeText(mContext, "No events this day!", Toast.LENGTH_SHORT).show();
}
XYValueSeries series = new XYValueSeries("Mood by Time");
if (minutes.size() > 0)
{
for( int i = 0; i < minutes.size(); i++)
{
series.add(minutes.get(i), mood.get(i));
}
}
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
dataset.addSeries(series);
XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer(); // Holds a collection of XYSeriesRenderer and customizes the graph
XYSeriesRenderer renderer = new XYSeriesRenderer();// This will be used to customize line 1
mRenderer.addSeriesRenderer(renderer);
double[] limits = new double [] {0, 23, 0, 7};
mRenderer.setPanLimits(limits);
mRenderer.setPanEnabled(true, false);
for (int i = 0; i < 23; i++)
{
if (i == 0)
{
mRenderer.addXTextLabel(i, ""+(i+12)+" AM");
}
if (i > 0 && i < 12)
{
mRenderer.addXTextLabel(i, ""+(i+" AM"));
}
if (i == 12)
{
mRenderer.addXTextLabel(i, ""+(i +" PM"));
}
if (i > 12 && i < 24)
{
mRenderer.addXTextLabel(i, ""+((i -12 ) +" PM"));
}
}
for (int i = 0; i < 7; i++)
{
if (i == 0)
{
mRenderer.addYTextLabel(i, "Terrible");
}
if (i == 3)
{
mRenderer.addYTextLabel(i, "Neutral");
}
if (i == 6)
{
mRenderer.addYTextLabel(i, "Fantastic");
}
}
mRenderer.setYAxisMax(7);
mRenderer.setYAxisMin(0);
mRenderer.setXAxisMax(23);
mRenderer.setPointSize(5);
mRenderer.setChartTitle(sDate);
mRenderer.setClickEnabled(true);
// Customization time for line 1!
renderer.setColor(Color.BLUE);
renderer.setLineWidth(3);
renderer.setPointStyle(PointStyle.CIRCLE);
renderer.setFillPoints(true);
// Customization time for line 2!
GraphicalView chartView;
chartView = ChartFactory.getLineChartView(mContext, dataset, mRenderer);
return chartView;
}
@覆盖
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState)
{
super.onCreateView(充气机、容器、保存状态);
mContext=this.getActivity();
mDbHelper=新日历适配器(mContext);
mDbHelper.open();
视图=充气机。充气(R.layout.activity\u图,容器,假);
Button next=(Button)view.findViewById(R.id.next);
Button previous=(Button)view.findViewById(R.id.previous);
Day=cal.get(日历年的第天);
年=校准获取(日历年);
图表视图=生成(天,年);
layout=(LinearLayout)view.findviewbyd(R.id.graph);
布局。添加视图(图表视图);
setOnClickListener(新的OnClickListener()
{
@凌驾
公共void onClick(视图arg0)
{
Day++;
如果(天>365)
{
日=0;
年份++;
}
布局。移除视图(图表视图);
图表视图=生成(天,年);
布局。添加视图(图表视图);
}
});
previous.setOnClickListener(新的OnClickListener()
{
公共void onClick(视图arg0)
{
天——;
如果(天<0)
{
日=0;
年--;
}
布局。移除视图(图表视图);
图表视图=生成(天,年);
布局。添加视图(图表视图);
}
});
setOnClickListener(新视图.OnClickListener()
{
@凌驾
公共void onClick(视图arg0){
SeriesSelection SeriesSelection=chartView.getCurrentSeriesAndPoint();
Log.e(“系列选择为”,“系列选择为”+);
Log.e(“我被点击了”);
}
});
返回视图;
}
@凌驾
公共空间
{
super.ondestory();
mDbHelper.close();
}
公共图形视图生成(长日、长年)
{
游标日历=mDbHelper.fetchDay(年,日);
Calendar cal=Calendar.getInstance();
校准设置(日历年,(整数)年);
校准设置(日历日/年(整数)日);
Log.e(“日为“,”+日);
Date-Date=cal.getTime();
字符串sDate=新的SimpleDataFormat(“MM/dd/yyyy”)。格式(日期);
分钟。清除();
心情,心情;
while(calendar.moveToNext())
{
小时=Float.valueOf((calendar.getInt(calendar.getColumnIndexOrThrow(calendardadapter.COLUMN\u NAME\u MINUTES)))/60;
分钟。加上(小时);
添加(calendar.getInt(calendar.getColumnIndexOrThrow(calendardadapter.COLUMN\u NAME\u FEELING));
}
如果(!calendar.moveToFirst())
{
Toast.makeText(mContext,“今天没有事件!”,Toast.LENGTH\u SHORT.show();
}
XYValueSeries=新的XYValueSeries(“时间情绪”);
如果(分钟.size()>0)
{
对于(int i=0;i0&&i<12)
{
mrender.addxtlabel(i,“+(i+“AM”);
}
如果(i==12)
{
mrender.addxtlabel(i,“+(i+“PM”);
}
如果(i>12&&i<24)
{
addxtlabel(i,“+((i-12)+“PM”);
}
}
对于(int i=0;i<7;i++)
{
如果(i==0)
{
mrender.addYTextLabel(i,“可怕”);
}
如果(i==3)
{
mrender.addYTextLabel(i,“中性”);
}
如果(i==6)
{
mRenderer.addYTextLabel(i,“奇妙”);
}
}
setYAxisMax(7);
mrender.setYAxisMin(0);
setXAxisMax(23);
mrender.设定点大小(5);
mRenderer.setChartTitle(sDate);
mrender.setClickEnabled(真);
//1号线的定制时间!
渲染器.setColor(Color.BLUE);
设置线宽(3);
渲染器.setPointStyle(PointStyle.CIRCLE);
渲染器。设置填充点(真);
//2号线的定制时间!
图形视图图表视图;
chartView=ChartFactory.getLineChartView(mContext、dataset、MRender);
返回图表视图;
}
哎呀,onlicklistener只响应了初始视图。我将onclicklistener移到我的chartview方法中,它开始工作。好,现在我看到它与mrender.setClickEnabled(true)有关;当我把它拿出来时,我可以在图表视图的所有实例上滚动。但是为什么我可以滚动并单击默认图表,而在按下下一步和上一步按钮时却不能滚动或单击?