当前位置: 首页 > 知识库问答 >
问题:

我怎样才能在我的MPAndroid折线图中用Firebase数据正确地获得总金额

桂德义
2023-03-14

我正在Android Studio中使用Java构建一个MPAndroid LineChart,我需要一些帮助,我需要以下内容;

  1. 设置我的x值的格式,这样我就可以看到“MMM,dd”值了。

这是我的路线图;

这是代码,我试图做总的基础上的一天,但它不工作。

private void retrieveChartData() {

    final Calendar c = Calendar.getInstance();
    @SuppressLint("SimpleDateFormat") DateFormat dateFormat = new SimpleDateFormat("yyyy");
    String year = dateFormat.format(c.getTime());

    databaseReference.addValueEventListener(new ValueEventListener() {
        @SuppressLint("NotifyDataSetChanged")
        @Override
        public void onDataChange(@NonNull DataSnapshot snapshot) {
            days.clear();

            ArrayList<Entry> data = new ArrayList<>();

            if (snapshot.hasChildren()) {

                for (DataSnapshot dataSnapshot : snapshot.getChildren()) {
                    Expense expense = dataSnapshot.getValue(Expense.class);

                    assert expense != null;
                    if (expense.getDate().substring(6, 10).equals(year)) {
                        boolean exists = false;
                        int count = 0;
                        for (int i = 0; i < days.size(); i++) {
                            count = i;
                            exists = days.get(i).getDate().substring(0, 2).equalsIgnoreCase(expense.getDate().substring(0, 2));
                            if (exists) break;
                        }
                        if (exists) {
                            days.get(count).setAmount(days.get(count).getAmount() + expense.getAmount());
                        } else {
                            days.add(expense);
                        }
                    }

                    data.add(new Entry(Integer.parseInt(expense.getDate().substring(0, 2)), expense.getAmount()));
                }
                showChart(data);

            } else {
                lineChart.clear();
                lineChart.invalidate();
            }

        }

        @Override
        public void onCancelled(@NonNull DatabaseError error) {

        }
    });
}

这是我在firebase的实时数据库

共有1个答案

丁震博
2023-03-14

我终于得到了预期的结果。

我发布这个片段以备将来查询。

private void retrieveChartData() {

    final Calendar c = Calendar.getInstance();
    @SuppressLint("SimpleDateFormat") DateFormat dateFormat = new SimpleDateFormat("yyyy");
    String year = dateFormat.format(c.getTime());

    databaseReference.addValueEventListener(new ValueEventListener() {
        @SuppressLint("NotifyDataSetChanged")
        @Override
        public void onDataChange(@NonNull DataSnapshot snapshot) {
            days.clear();

            ArrayList<Entry> data = new ArrayList<>();
            int count = 0;
            if (snapshot.hasChildren()) {

                for (DataSnapshot dataSnapshot : snapshot.getChildren()) {
                    Expense expense = dataSnapshot.getValue(Expense.class);

                    assert expense != null;
                    if (expense.getDate().substring(6, 10).equals(year)) {
                        boolean exists = false;
                        for (int i = 0; i < days.size(); i++) {
                            count = i;
                            exists = days.get(i).getDate().substring(0, 2).equalsIgnoreCase(expense.getDate().substring(0, 2));
                            if (exists) break;
                        }
                        if (exists) {
                            days.get(count).setAmount(days.get(count).getAmount() + expense.getAmount());
                        } else {
                            days.add(expense);
                        }
                    }
                }

                for (int i = 0; i < days.size(); i++) {
                    data.add(new Entry(Integer.parseInt(days.get(i).getDate().substring(0, 2)), days.get(i).getAmount()));
                }
                showChart(data);

            } else {
                lineChart.clear();
                lineChart.invalidate();
            }

        }

        @Override
        public void onCancelled(@NonNull DatabaseError error) {
            throw error.toException();
        }
    });
}
 类似资料:
  • 在使用不同的验证器调用不同的rpc方法之前,我需要验证请求。 所以我实现了如下验证器 并在我的rpc方法之前添加自定义注释 但是我发现我在gRPC ServerInterceptor中找不到获取注释信息的方法。有没有办法像这样实现grpc请求验证?

  • 我有适当的基于ORM的post和tags表。在数据透视表上分配给post的标记。发帖- 这是我的数据库: 我想检索所有有特殊标签名称的帖子。

  • 如何获取用户当前所在的路由?我需要它来隐藏导航栏链接,如果用户当前在链接通向的路线上。

  • 我有一个问题,在我看来挺简单的,但到目前为止还不可能找到一个简单的解决方案:在我的网站上,每当Android软键盘弹出时,它就会调整窗口大小,缩小内容,而不是仅仅覆盖页面。 前两个是现状,第三个是我想要的。在iOS上是这样工作的。我该怎么做才能让它正常工作呢? 我试着设定身体的大小和位置,但到目前为止,没有运气。我已经看到了一些非常复杂的JS代码片段来解决类似的问题,但是我没有让它们按照我想要的方

  • 如何获取已设置为ImageView的可绘图文件的名称?

  • 我最近开始使用在我的android应用程序上播放流链接,比如和文件,但当我试图播放文件,以下消息开始出现在Android logcat中: 源错误。com.google.android.exoplayer2.source.无法识别的输入格式异常:输入不以#EXTM3U头开始。在com.google.android.exoplayer2.source.hls.playlist.HlsPlaylist