Tag: firebase realtime database

Firebase阅读问题。 对象始终为null

我有一个方法应该初始化我的字段变量currentTask 。 我不明白为什么我无法从firebase读取我的对象。 这是方法: private void getCurrentTask() { final DatabaseReference dRef1 = database.getReference().child(“Users”).child(uid).child(“CurrentTask”); dRef1.addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { if (dataSnapshot.exists()) { currentTask = dataSnapshot.getValue(CurrentTask.class); } else { Toast toast = Toast.makeText(TasksListActivity.this, “no magic”, Toast.LENGTH_LONG); toast.show(); } } @Override public void onCancelled(DatabaseError databaseError) {} }); if (currentTask == null) { Toast toast […]

在Custom Object Firebase Android中获取参考和密钥

我希望将每个特定对象的dataSnapshot和key的引用传递给自定义的“Message”对象。 我已经尝试在Message.class中使用键’String key’,但它似乎返回null。 这是我的Message对象当前的方式: public class Message { private String key; private String sender_id; private String sender_username; private String receiver_username; private String receiver_id; private String chat_id; private String message; private Firebase ref; private double createdAt; private boolean read; public Message() { // empty default constructor, necessary for Firebase to be able to deserialize messages } […]

DatabaseException:无法将java.lang.String类型的对象转换为type

我已经查看了类似问题的其他一些答案,但不明白为什么我的工作不起作用。 我正在尝试让我的应用程序从Firebase读取命令并移动无人机。 firebase中的命令来自一个单独的软件。 该应用程序构建在Parrot Drone SDK示例代码之上。 它似乎能够从命令对象获取文本并将其附加到textview,但是当添加新子项时它只会崩溃。 添加新的孩子时,我收到此错误。 E/AndroidRuntime: FATAL EXCEPTION: main Process: com.parrot.sdksample, PID: 10592 com.google.firebase.database.DatabaseException: Can’t convert object of type java.lang.String to type com.parrot.sdksample.activity.CommandObject at com.google.android.gms.internal.zg.zzb(Unknown Source) at com.google.android.gms.internal.zg.zza(Unknown Source) at com.google.firebase.database.DataSnapshot.getValue(Unknown Source) at com.parrot.sdksample.activity.MiniDroneActivity$13.onChildAdded(MiniDroneActivity.java:383) at com.google.android.gms.internal.px.zza(Unknown Source) at com.google.android.gms.internal.vj.zzHX(Unknown Source) at com.google.android.gms.internal.vp.run(Unknown Source) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at […]

从firebase数据库检索数据并存储在数组列表中

我试图以Android应用程序的forms创建一个小课程聚合器程序。 我的课程都存储在Firebase实时数据库中,可以从firebase控制台查看,一切都很好。 问题是我编写了一个java方法来连接数据库,从数据库中检索数据,将数据转换为自定义Java对象Course ,将其附加到另一个自定义Java对象CourseCardModel ,然后将CourseCardModel对象保存到数组列表。 与数据库的连接成功完成,并且它生成的快照包含正确的信息,我已通过循环快照并成功打印每个Course对象的变量Course Name来validation这些信息。 问题是当方法完成时,由于某种原因,arrayList返回为空,即使在整个快照迭代中检查ArrayList的大小时,我也可以看到CardModel对象被添加到它。 如果有人帮助解决这个问题,那将非常感激,我对Firebase来说相当新。 GenerateCourses()方法 private ArrayList generateCourseCards() { courseCardModelList = new ArrayList(); cardModel = new CourseCardModel(); dbref = FirebaseDatabase.getInstance().getReference().child(“courses”); // Retrieve the course data from firebase db and cast as Course object dbref.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot snapshot) { Log.e(“Count ” ,”” + snapshot.getChildrenCount()); for (DataSnapshot postSnapshot: […]

如何获取父节点的值作为字符串?

所以在上面的数据结构中,我想获得Aprilia Caponord 1200价值(在图中标出)。 我有对Aprilia (根节点)的Firebase引用,我可以获取所有键/值对数据。 这是我的代码 @override public void onDataChange(DataSnapshot dataSnapshot) { for (DataSnapshot child : dataSnapshot.getChild()) { Map value = (Map) child.getValue(); String bike_price = value.get(“price”).toString(); String image_url = value.get(“image_url”).toString(); } } 很明显,我可以获得具有键/值关系的子节点的所有值。 但我无法专门获取父节点的名称。 那么如何以String格式获取父节点的值? 如果我打印child.getValue().toString() ,我得到JSON值,但我对解析JSON不感兴趣。 是否有任何特定的方法来获取父节点值? {Aprilia Caponord 1200={image_url=____________, price=18.35}.. }

Firebase / Android:将检索到的值从Firebase添加到arraylist会返回空指针exception

我正在尝试将检索到的值从Firebase数据库添加到Arraylist并从那里添加到String数组。 我的检索方法工作正常。 我可以把所有的价值都打印出来。 但显然它并没有被添加到arraylist。 这是我在片段类的onActivityCreated()中检索的代码。 ArrayList allBrands = new ArrayList(); brandRef=FirebaseDatabase.getInstance().getReferenceFromUrl(“https://stockmanager-142503.firebaseio.com/Brands”); q=brandRef.orderByChild(“brandName”); q.addChildEventListener(new ChildEventListener() { @Override public void onChildAdded(DataSnapshot dataSnapshot, String s) { allBrands.add((dataSnapshot.getValue(Brand.class)).getBrandName()); Toast.makeText(getActivity(),(dataSnapshot.getValue(Brand.class)).getBrandName(), Toast.LENGTH_SHORT).show(); } @Override public void onChildChanged(DataSnapshot dataSnapshot, String s) { } @Override public void onChildRemoved(DataSnapshot dataSnapshot) { } @Override public void onChildMoved(DataSnapshot dataSnapshot, String s) { } @Override public void […]

Firebase DatabaseException:无法将java.lang.Long类型的值转换为String

com.google.firebase.database.DatabaseException:无法将java.lang.Long类型的值转换为String 是在尝试将数据检索到对象以供使用时遵循文档时遇到的错误。 这是我的对象模型 public class User { private String tour_director_key; private String last_name; private String location_latitude; private String tour_id; private String photo; private String tour_director_name; private String middle_name; private String location_longitude; private String passenger_id; private long location_updated; private String tour_director; private String email; private String first_name; private String mobile_phone; private String td_id; public User() { […]

ArrayList不在onChildAdded函数内更新

public class DataService { private static DataService ourInstance = new DataService(); private DatabaseReference mDatabase; public static DataService getInstance() { return ourInstance; } public ArrayList getFriendList() { mDatabase = FirebaseDatabase.getInstance().getReference().child(“users”); final ArrayList list = new ArrayList(); mDatabase.addChildEventListener(new ChildEventListener() { @Override public void onChildAdded(DataSnapshot dataSnapshot, String s) { UserDatabase userDatabase = dataSnapshot.getValue(UserDatabase.class); list.add(userDatabase); } @Override public void […]

将新值添加到Firebase实时数据库时如何保存当前日期/时间

当我通过控制面板向Firebase实时数据库添加新值时,我想在特定字段中保存当前日期/时间。 我怎样才能做到这一点? 请帮帮我。

为什么我不能使用populateViewHolder覆盖方法?

我试着从我的fragment onViewCreated方法中检索database中的数据我使用过FirebaseRecylerAdapter,如下所示 @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); FirebaseRecyclerAdapter firebaseRecyclerAdapter; } public static class AllUsersViewHolder extends RecyclerView.ViewHolder { View view; public AllUsersViewHolder(View itemView) { super(itemView); view = itemView; } } 当我使用firebaseRecyclerAdapter = new FirebaseRecyclerAdapter它不会给我populateViewHolder方法只需给出如下方法 FirebaseRecyclerAdapter firebaseRecyclerAdapter = new FirebaseRecyclerAdapter() { @Override protected void onBindViewHolder(AllUsersViewHolder holder, int position, AllUsers model) { […]