使用 Android Studio 从 Firebase 中的某个位置检索数据

Posted

技术标签:

【中文标题】使用 Android Studio 从 Firebase 中的某个位置检索数据【英文标题】:Retreive data from a certain position in firebase using Android Studio 【发布时间】:2019-02-14 04:54:49 【问题描述】:

大家好 :) 我是编程新手,刚开始在 android Studio 中使用 RecyclerView。

现在我想从 firebase 中的位置 x 检索数据:

例如,我的数据库包括:

用户: Max(包含字段:大学、年龄、城市) Lena(字段:大学、年龄、城市)

我不知道有多少用户以及他们的名字,我想获取一个用户在位置 x 的所有数据。

有没有人知道如何解决这个问题? 提前致谢!

编辑: 我现在保存了用户的 UID 并将其传递给其他活动。然后我试图从firebase接收所属数据,但我仍然无法在TextView中显示来自“大学”字段的数据。

public class nextActivity extends AppCompatActivity

String UID;
private DocumentReference myReference;

@Override
protected void onCreate(Bundle savedInstanceState) 
super.onCreate(savedInstanceState);
setContentView(R.layout.next_activity);

//get data from intent (I checked the value of UID - getIntent worked.)
UID = getIntent().getStringExtra("uid");

// I am not sure with the following line. Is it possible to just add "UID"?
myReference = FirebaseFirestore.getInstance().document("Users/"+UID);
myReference.addSnapshotListener(new EventListener<DocumentSnapshot>() 
    @Override
    public void onEvent(@Nullable DocumentSnapshot documentSnapshot, @Nullable FirebaseFirestoreException e) 
        if (documentSnapshot.exists()) 

            long universityID = documentSnapshot.getLong("university");
            cUniversityText.setText("University"+Long.toString(universityID));

         else if (e != null) 
            Log.w("InspiringQuote", "Exception!", e);
        
    
);
cUniversityText = findViewById(R.id.cuniversitytext);

【问题讨论】:

您构建数据库的方式不合适。如需指导,请参阅 - ***.com/questions/16421179/… at position x 是什么意思?请回复@。 @dunkiero 也许您应该保存用户的uid 并将其传递给其他活动,以便能够获取特定用户的数据。 @dunkiero 这行代码在Log.d("TAG", String.valueOf(universityID)); 放在这行cUniversityText.setText("University"+Long.toString(universityID)); 之后会打印什么? @dunkiero 好的,请随时通知我。 【参考方案1】:

我认为这可能会对您有所帮助:

reference.addValueEventListener(new ValueEventListener() 
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) 
        DataSnapshot users = dataSnapshot.child("users");
        int count=0;
        for (DataSnapshot usrchild : users.getChildren())
           count++;
           if(count == 'Position x variable')
              DataSnapshot university = usrchild.child("University");
              DataSnapshot age = usrchild.child("Age");
              DataSnapshot City = usrchild.child("City");
              if(!String.valueof(university.getValue()).matches(""))
              //Value is not null
              
           
        
    

    @Override
    public void onCancelled(DatabaseError databaseError) 
        Toast.makeText(getActivity(), databaseError.getMessage(), Toast.LENGTH_SHORT).show();
    
);

【讨论】:

好的!谢谢,我明白了。现在我需要将大学设置为文本。如何避免它变为空?

以上是关于使用 Android Studio 从 Firebase 中的某个位置检索数据的主要内容,如果未能解决你的问题,请参考以下文章

将 Android 应用程序从 Android Studio 移植到 Microsoft Visual Studio

从eclipse到android studio

无法从 Android 将数据发布到 Firebase 数据库

如何设置android studio run release

Android项目从Eclipse增加支持Android Studio

使用 JSON 将数据从 mysql 显示到 android studio