簡體   English   中英

如何根據 firebase-realtime-database 中特定值的存在在 android studio 中顯示數據列表?

[英]How do I show a list of data in android studio based on the presence of a particular value in firebase-realtime-database?

所以我試圖檢索選擇特定值的用戶列表。

這是我在 Firebase 中創建的數據庫。 我正在嘗試打印在“providedServices”節點中選擇“食物”選項的用戶及其地址列表。

Firebase 數據庫

我正在遍歷數據庫並嘗試使用 IF 語句來查找選擇該選項的用戶,但是,我被卡住了。 下面是我的代碼片段:

代碼

有人可以幫幫我嗎? 順便說一句,我是初學者,所以請對我放輕松:')

以下是 FoodActivity 頁面,其中

public class FoodActivity extends AppCompatActivity {

    DatabaseReference databaseDonors;

    ListView listViewDonors;

    List<Donors> donorsList;

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

        listViewDonors = (ListView) findViewById(R.id.listViewDonors);

        donorsList = new ArrayList<>();

    }

    public FoodActivity() {
    }

    @Override
    protected void onStart() {
        super.onStart();

        DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
        DatabaseReference donorsRef = rootRef.child("donors");
        Query provideServicesQuery = donorsRef.orderByChild("provideServices").equalTo("Food");
        ValueEventListener valueEventListener = new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                for(DataSnapshot ds : dataSnapshot.getChildren()) {
                    Donors donors = ds.getValue(Donors.class);
                    donorsList.add(donors);
                    Log.d("TAG", donors.getDonorName());
                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
                Log.d("TAG", databaseError.getMessage()); //Don't ignore potential errors!
            }
        };
        provideServicesQuery.addListenerForSingleValueEvent(valueEventListener);
        
    }
}

以下是使用的 Donors 類。

public class Donors {
    String donorID;
    String donorName;
    String providedServices;
    String donorBusinessName;
    String donorAddress;
    String donorEmail;
    String donorPhone;


    public Donors(String donorID, String donorName, String providedServices, String donorBusinessName, String donorAddress, String donorEmail, String donorPhone) {
        this.donorID = donorID;
        this.donorName = donorName;
        this.providedServices = providedServices;
        this.donorBusinessName = donorBusinessName;
        this.donorAddress = donorAddress;
        this.donorEmail = donorEmail;
        this.donorPhone = donorPhone;
    }

    public Donors() {
    }

    public String getDonorID() {

        return donorID;
    }

    public String getDonorName() {

        return donorName;
    }

    public String getProvidedServices() {

        return providedServices;
    }

    public String getDonorBusinessName() {

        return donorBusinessName;
    }

    public String getDonorAddress() {

        return donorAddress;
    }

    public String getDonorEmail() {

        return donorEmail;
    }

    public String getDonorPhone() {

        return donorPhone;
    }
}

要僅獲取將provideServices屬性設置為“Food”的對象,您絕對應該使用以下代碼行中的查詢:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference donorsRef = rootRef.child("donors");
Query provideServicesQuery = donorsRef.orderByChild("provideServices").equalTo("Food");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            Donors donors = ds.getValue(Donors.class);
            donorsList.add(donors);
            Log.d("TAG", donors.getDonorName());
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d("TAG", databaseError.getMessage()); //Don't ignore potential errors!
    }
};
provideServicesQuery.addListenerForSingleValueEvent(valueEventListener);

除此之外事實donorsList將填充Donors的物體,你還可以看到在logcat中誰擁有的所有捐助者的名字provideServices屬性設置為“食品”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM