在Android Studio中使用Firebase从特定位置检索数据。
在Android Studio中使用Firebase从特定位置检索数据。
大家好 🙂 我刚刚开始学习编程,刚刚弄清楚如何在Android Studio中使用RecyclerView。\n现在我想从Firebase的位置x检索数据:\n例如,我的数据库包括:\n用户:\nMax(具有字段:大学,年龄,城市)\nLena(具有字段:大学,年龄,城市)\n我不知道有多少用户,他们的名字是什么,我想获取一个位置x上一个用户的所有数据。\n有人有办法解决这个问题吗?\n提前感谢!\n编辑:\n我现在保存了用户的UID,并将其传递给其他活动。然后,我尝试从Firebase接收相关数据,但我仍然无法在TextView中显示“大学”字段的数据。\n
public class nextActivity extends AppCompatActivity{ String UID; private DocumentReference myReference; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.next_activity); //从意图中获取数据(我检查了UID的值- getIntent起作用。) UID = getIntent().getStringExtra("uid"); // 我不确定下面的代码行。可以只添加“UID”吗? myReference = FirebaseFirestore.getInstance().document("Users/"+UID); myReference.addSnapshotListener(new EventListener() { @Override public void onEvent(@Nullable DocumentSnapshot documentSnapshot, @Nullable FirebaseFirestoreException e) { if (documentSnapshot.exists()) { long universityID = documentSnapshot.getLong("university"); cUniversityText.setText("大学"+Long.toString(universityID)); } else if (e != null) { Log.w("InspiringQuote", "Exception!", e); } } }); cUniversityText = findViewById(R.id.cuniversitytext);
\n}
问题的原因是用户想要从Firebase中的特定位置获取数据,并将获取到的数据设置为文本。然而,在代码中存在一个问题,即当获取的数据为空时,会导致文本显示为null。
解决方法是在获取数据之前,先判断数据是否为空。如果数据不为空,则将其设置为文本。下面是修改后的代码:
reference.addValueEventListener(new ValueEventListener() { 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"); String universityValue = String.valueOf(university.getValue()); if(!universityValue.matches("") && universityValue != null){ //Value is not null //Set universityValue as text } } } } public void onCancelled(DatabaseError databaseError) { Toast.makeText(getActivity(), databaseError.getMessage(), Toast.LENGTH_SHORT).show(); } });
通过添加判断条件,即判断获取到的数据是否为空,并且不为null,可以避免设置文本时显示为null的问题。这样,即使数据为空,也不会导致文本显示错误。