繁体   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