使用变量mpAndroidChart设置yData数组
因此,基本上在制作饼图时,我需要从Firebase数据库中获取数据,并对它们进行迭代,检查它们是否高于或低于上下限,并将它们分配给使用变量mpAndroidChart设置yData数组,android,firebase,firebase-realtime-database,mpandroidchart,Android,Firebase,Firebase Realtime Database,Mpandroidchart,因此,基本上在制作饼图时,我需要从Firebase数据库中获取数据,并对它们进行迭代,检查它们是否高于或低于上下限,并将它们分配给浮点,但当我将它们添加到数组中时,饼图上不会出现任何结果,我用常量而不是变量尝试了这个方法,结果都成功了,所以我不知道该怎么办 public class MainFragment extends Fragment { private Query databaseQuery; private DatabaseReference databaseReference; p
浮点
,但当我将它们添加到数组
中时,饼图上不会出现任何结果,我用常量而不是变量尝试了这个方法,结果都成功了,所以我不知道该怎么办
public class MainFragment extends Fragment {
private Query databaseQuery;
private DatabaseReference databaseReference;
private ListView latestLV;
private List<GlucoseData> glucoseDataList;
private List <Float> glucosePieChart;
private Float Below = 0f;
private Float Above = 0f;
private Float On = 0f;
private String[] xData = {"Above Target", "On Target", "Below Target"};
private Float [] yData = {Below, On, Above};
private String ideallevel;
private TextView averageTV;
PieChart pieChart;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_main, container, false);
}
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getActivity().setTitle("Home");
latestLV = (ListView) getActivity().findViewById(R.id.latestLV);
averageTV = (TextView) getActivity().findViewById(R.id.averageTV);
pieChart = (PieChart) getActivity().findViewById(R.id.pieChart);
glucoseDataList = new ArrayList<>();
glucosePieChart = new ArrayList<>();
databaseQuery = FirebaseDatabase.getInstance().getReference().child("Entries").orderByChild("dateTime").limitToLast(1);
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference idealLevelRef = database.getReference("Ideal Level");
idealLevelRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String idealLevel = dataSnapshot.getValue(String.class);
ideallevel = idealLevel;
Log.d(GifHeaderParser.TAG, "Value is: " + idealLevel);
}
@Override
public void onCancelled(DatabaseError error) {
Log.w(GifHeaderParser.TAG, "Failed to read value.", error.toException());
}
});
if(ideallevel == null){
ideallevel = "7";
}
Float idealLevelInt = Float.parseFloat(ideallevel);
final Float idealLevelUBInt = idealLevelInt + 1;
String idealLevelUB = idealLevelUBInt.toString().trim();
final Float idealLevelLBInt = idealLevelInt - 1;
String idealLevelLB = idealLevelLBInt.toString().trim();
databaseReference = FirebaseDatabase.getInstance().getReference().child("Entries");
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot glucoseDataSnapshot: dataSnapshot.getChildren()) {
GlucoseData glucoseData = glucoseDataSnapshot.getValue(GlucoseData.class);
Float add = Float.parseFloat(glucoseData.getBloodLevels());
glucosePieChart.add(add);
}
double average = 0.0;
for (int i = 0; i < glucosePieChart.size(); i++) {
average += glucosePieChart.get(i);
}
Double ans = average/glucosePieChart.size();
BigDecimal bd = new BigDecimal(ans);
bd = bd.setScale(2, RoundingMode.HALF_UP);
String ansS = bd.toString();
averageTV.setText(ansS);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
for (int i=0; i<glucosePieChart.size(); i++) {
if (glucosePieChart.get(i) < idealLevelLBInt){
Below = Below + 1f;
}if (glucosePieChart.get(i) > idealLevelUBInt){
Above = Above + 1f;
}else{
On = On + 1f;
}
}
Float B = Below;
Float A = Above;
Float O = On;
Float yData[] = {B,O,A};
ArrayList<PieEntry> yEntries = new ArrayList<>();
ArrayList<String> xEntries = new ArrayList<>();
for (int i = 0; i < yData.length; i++){
yEntries.add(new PieEntry(yData[i], i));
}
for (int i = 0; i < xData.length; i++){
xEntries.add(xData[i]);
}
PieDataSet pieDataSet = new PieDataSet(yEntries, "Blood Levels");
pieDataSet.setSliceSpace(2);
pieDataSet.setValueTextSize(12);
ArrayList<Integer> colours = new ArrayList<>();
colours.add(Color.YELLOW);
colours.add(Color.GREEN);
colours.add(Color.RED);
pieDataSet.setColors(colours);
Legend legend = pieChart.getLegend();
legend.setForm(Legend.LegendForm.CIRCLE);
legend.setPosition(Legend.LegendPosition.BELOW_CHART_RIGHT);
PieData pieData = new PieData(pieDataSet);
pieChart.setData(pieData);
pieChart.invalidate();
pieChart.setRotationEnabled(true);
}
public类MainFragment扩展片段{
专用查询数据库查询;
私有数据库参考数据库参考;
私有列表视图最新版本;
非公开名单;
非公开名单;
私人浮动低于=0f;
私人浮动高于=0f;
私人浮动On=0f;
私有字符串[]扩展数据={“高于目标”、“在目标上”、“低于目标”};
私有Float[]yData={在下面,在上面,在上面};
私有字符串ideallevel;
私人文本视图平均电视;
饼图;
@可空
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
返回充气机。充气(右布局图。主容器,假);
}
已创建ActivityState上的公共无效(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
getActivity().setTitle(“主页”);
latestLV=(ListView)getActivity().findViewById(R.id.latestLV);
averageTV=(TextView)getActivity().findViewById(R.id.averageTV);
pieChart=(pieChart)getActivity().findViewById(R.id.pieChart);
glucoseDataList=新ArrayList();
glucosePieChart=newArrayList();
databaseQuery=FirebaseDatabase.getInstance().getReference().child(“条目”).orderByChild(“日期时间”).limitToLast(1);
FirebaseDatabase=FirebaseDatabase.getInstance();
DatabaseReference idealLevelRef=database.getReference(“理想级别”);
idealLevelRef.addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
String idealLevel=dataSnapshot.getValue(String.class);
ideallevel=ideallevel;
Log.d(GifHeaderParser.TAG,“值为:”+idealLevel);
}
@凌驾
已取消的公共无效(DatabaseError错误){
Log.w(GifHeaderParser.TAG,“读取值失败”,error.toException());
}
});
if(ideallevel==null){
ideallevel=“7”;
}
Float-idealLevelInt=Float.parseFloat(ideallevel);
最终浮点数idealLevelUBInt=idealLevelInt+1;
String idealLevelUB=idealLevelUBInt.toString().trim();
最终浮点idealLevelInt=idealLevelInt-1;
字符串idealLevelLB=ideAllevelBint.toString().trim();
databaseReference=FirebaseDatabase.getInstance().getReference().child(“条目”);
databaseReference.addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
对于(DataSnapshot-gausedatasnapshot:DataSnapshot.getChildren()){
GlucoseData GlucoseData=glucoseDataSnapshot.getValue(GlucoseData.class);
Float add=Float.parseFloat(glucoseData.getBloodLevels());
葡萄糖表观部分添加(添加);
}
双平均=0.0;
对于(int i=0;i
感谢您的
onDataChange
回调中的任何帮助,请确保您调用了glucosePieChart.notifyDataSetChanged()
它似乎仍然没有显示任何内容