[英]How to retrieve data from Firebase and set it as string and int for charts
Good morning/afternoon/evening I just need help on how can I change the data of string and value from firebase to my code or chart.早上好/下午/晚上好,我只需要关于如何将字符串和值的数据从 firebase 更改为我的代码或图表的帮助。 I'm currently using preset values as shown (String "skyobject" and int"500,300,600,123" and hoping to use data from my firebase which is shown in the image. thank you for helping me I'm new to this android studio thing so I'm grateful for any help that I can get. thank you so much in advance for those people who will help me
我目前正在使用如图所示的预设值(String "skyobject" 和 int"500,300,600,123" 并希望使用我的 firebase 中的数据,如图所示。谢谢你的帮助,我是这个 android studio 的新手,所以我感谢我能得到的任何帮助。非常感谢那些帮助我的人
public class MainActivity extends AppCompatActivity {
AnyChartView anyChartView;
Button btn;
DatabaseReference reff;
String [] skyobject = {"sun","moon","stars","planets"};
int[] datas = {500,300,600,123};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
anyChartView =( AnyChartView) findViewById(R.id.any_chart_view);
setupPieChart();
}
public void setupPieChart() {
Pie pie = AnyChart.pie();
List<DataEntry> dataEntries = new ArrayList<>();
for (int i=0;i<skyobject.length;i++){
dataEntries.add(new ValueDataEntry(skyobject[i],datas[i]));
}
pie.data(dataEntries);
anyChartView.setChart(pie);
}
}
Edited code with the given code of @Alex Mamo使用@Alex Mamo 的给定代码编辑代码
package com.javapapers.androidchartapp;
import android.os.Bundle;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import com.anychart.AnyChart;
import com.anychart.AnyChartView;
import com.anychart.chart.common.dataentry.DataEntry;
import com.anychart.chart.common.dataentry.ValueDataEntry;
import com.anychart.charts.Pie;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.javapapers.androidchartapp.R;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
AnyChartView anyChartView;
DatabaseReference rootRef;
String [] skyobject = {"sun","moon","stars","planets"};
int[] datas = {500,300,600,123};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String key = ds.getKey();
String name = ds.getValue(String.class);
Log.d("TAG", key + ": " + name);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
}
};
rootRef.addListenerForSingleValueEvent(valueEventListener);
anyChartView = findViewById(R.id.any_chart_view);
setupPieChart();
}
public void setupPieChart() {
Pie pie = AnyChart.pie();
List<DataEntry> dataEntries = new ArrayList<>();
for (int i=0;i<skyobject.length;i++){
dataEntries.add(new ValueDataEntry(skyobject[i],datas[i]));
}
pie.data(dataEntries);
anyChartView.setChart(pie);
}
This is the Error in the Logcat这是 Logcat 中的错误
--------- beginning of crash
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.javapapers.androidchartapp, PID: 22809
java.lang.RuntimeException: Uncaught exception in Firebase Database runloop (3.0.0). Please report to firebase-database-client@google.com
at com.google.firebase.database.android.AndroidPlatform$1$1.run(com.google.firebase:firebase-database@@16.0.4:98)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6776)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/firebase/FirebaseApp$IdTokenListener;
at com.google.firebase.database.android.AndroidPlatform.newAuthTokenProvider(com.google.firebase:firebase-database@@16.0.4:112)
at com.google.firebase.database.core.Context.ensureAuthTokenProvider(com.google.firebase:firebase-database@@16.0.4:246)
at com.google.firebase.database.core.Context.initServices(com.google.firebase:firebase-database@@16.0.4:98)
at com.google.firebase.database.core.Context.freeze(com.google.firebase:firebase-database@@16.0.4:77)
at com.google.firebase.database.core.RepoManager.createLocalRepo(com.google.firebase:firebase-database@@16.0.4:92)
at com.google.firebase.database.core.RepoManager.createRepo(com.google.firebase:firebase-database@@16.0.4:42)
at com.google.firebase.database.FirebaseDatabase.ensureRepo(com.google.firebase:firebase-database@@16.0.4:357)
at com.google.firebase.database.FirebaseDatabase.getReference(com.google.firebase:firebase-database@@16.0.4:201)
at com.javapapers.androidchartapp.MainActivity.onCreate(MainActivity.java:42)
at android.app.Activity.performCreate(Activity.java:6955)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2927)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3045)
at android.app.ActivityThread.-wrap14(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1642)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6776)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.firebase.FirebaseApp$IdTokenListener" on path: DexPathList[[zip file "/data/app/com.javapapers.androidchartapp-1/base.apk"],nativeLibraryDirectories=[/data/app/com.javapapers.androidchartapp-1/lib/arm64, /system/lib64, /vendor/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at com.google.firebase.database.android.AndroidPlatform.newAuthTokenProvider(com.google.firebase:firebase-database@@16.0.4:112)
at com.google.firebase.database.core.Context.ensureAuthTokenProvider(com.google.firebase:firebase-database@@16.0.4:246)
at com.google.firebase.database.core.Context.initServices(com.google.firebase:firebase-database@@16.0.4:98)
at com.google.firebase.database.core.Context.freeze(com.google.firebase:firebase-database@@16.0.4:77)
at com.google.firebase.database.core.RepoManager.createLocalRepo(com.google.firebase:firebase-database@@16.0.4:92)
at com.google.firebase.database.core.RepoManager.createRepo(com.google.firebase:firebase-database@@16.0.4:42)
at com.google.firebase.database.FirebaseDatabase.ensureRepo(com.google.firebase:firebase-database@@16.0.4:357)
at com.google.firebase.database.FirebaseDatabase.getReference(com.google.firebase:firebase-database@@16.0.4:201)
at com.javapapers.androidchartapp.MainActivity.onCreate(MainActivity.java:42)
at android.app.Activity.performCreate(Activity.java:6955)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2927)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3045)
at android.app.ActivityThread.-wrap14(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1642)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6776)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
image of my database click here我的数据库的图像单击此处
image of the pie chart output click here饼图输出的图像单击此处
edited with the given codes down there got error with the TAG click here使用给定的代码进行编辑,标签出现错误,请单击此处
To get the keys and values for those properties, please use the following lines of code:要获取这些属性的键和值,请使用以下代码行:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String key = ds.getKey();
String name = ds.getValue(String.class);
Log.d("TAG", key + ": " + name);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
}
};
rootRef.addListenerForSingleValueEvent(valueEventListener);
The result in your logcat will be:您的 logcat 中的结果将是:
Moon: 300
Planets: 123
Stars: 600
Sun: 500
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.