使用变量mpAndroidChart设置yData数组

使用变量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

因此,基本上在制作饼图时,我需要从Firebase数据库中获取数据,并对它们进行迭代,检查它们是否高于或低于上下限,并将它们分配给
浮点
,但当我将它们添加到
数组
中时,饼图上不会出现任何结果,我用常量而不是变量尝试了这个方法,结果都成功了,所以我不知道该怎么办

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()
它似乎仍然没有显示任何内容