簡體   English   中英

從特定位置從 firebase 獲取數據

[英]Get data from firebase from a specific position

嘿,我正在編寫一個應用程序,它必須使用項目在 listView 中的位置從 firebase 獲取特定數據。 我的問題是我不知道如何在 firebase 上使用這個項目。

在此處輸入圖像描述

對於 Torneo 的所有孩子,我必須控制所有 nameCreator。 我試過這個:

public Boolean RegisterUser(Data data, final int position, final Context c){
        boolean registration;
        final ArrayList<String> Creator = new ArrayList<>();



        databaseReference.orderByChild("Tornei").equalTo(Integer.toString(position)).addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                for(DataSnapshot datas: dataSnapshot.getChildren()){
                   Creator.add(data.child("nameCreator").getValue().toString());
                }
            }
            @Override
            public void onCancelled(DatabaseError databaseError) {
            }
        });
        if(Creator.equals(data.getNameCreator())){
            registration = false;
        }else{
            registration = true;
        }

        return registration;
    }

Data 是我創建的帶有一些 getter 和 setter 的類。 position 是元素在列表視圖中的位置。

感謝您的回答。

更改以下內容:

databaseReference.orderByChild("Tornei").equalTo(Integer.toString(position)).addListenerForSingleValueEvent(new ValueEventListener() {

進入這個:

databaseReference.child("Tornei").addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for(DataSnapshot datas: dataSnapshot.getChildren()){
               Creator.add(datas.child("nameCreator").getValue().toString());
    if(Creator.equals(data.getNameCreator())){
        registration = false;
    }else{
        registration = true;
    }
            }
        }
        @Override
        public void onCancelled(DatabaseError databaseError) {
        }
    });

然后您將能夠循環並檢索nameCreator的值

這簡單。

【第一步| 獲取快照數據並保存在全局變量中】

DatabaseReference rootReference = FirebaseDatabase.getInstance().getReference();
DatabaseReference fruitsReference = rootReference.child("fruits");

DataSnapshot fruitsData;

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

    fruitsReference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshots) {
            fruitsData = dataSnapshots;        
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
        }
    });
}

【第二步| 通過循環找到你的目標位置】

public void onClick(View view) {
    int index = 0;

    for (DataSnapshot childSnapshot : fruitsData.getChildren()) {
        if (index == 1) {        //your target position
            DatabaseReference currentFruitReference = childSnapshot.getRef();

            currentFruitReference.setValue("peach");        //do whatever you want
        }

        index++;
    }
}

暫無
暫無

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

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