简体   繁体   English

从特定位置从 firebase 获取数据

[英]Get data from firebase from a specific position

Hy, I'm writing an application that has to get specific data from firebase using the position of the item in the listView.嘿,我正在编写一个应用程序,它必须使用项目在 listView 中的位置从 firebase 获取特定数据。 My problem is that I have no idea how to take it this item on firebase.我的问题是我不知道如何在 firebase 上使用这个项目。

在此处输入图像描述

For all child of Torneo I have to control all the nameCreator.对于 Torneo 的所有孩子,我必须控制所有 nameCreator。 I have tried this:我试过这个:

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 is a class with some getter and setter that I have created. Data 是我创建的带有一些 getter 和 setter 的类。 position is the position of the element on the list view. position 是元素在列表视图中的位置。

Thanks for answers.感谢您的回答。

Change the following:更改以下内容:

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

into this:进入这个:

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) {
        }
    });

Then you will be able to loop and retrieve the value of nameCreator然后您将能够循环并检索nameCreator的值

It's easy.这简单。

【Step 1 | 【第一步| Get Snapshot Data and Save in Global Variable】获取快照数据并保存在全局变量中】

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) {
        }
    });
}

【Step 2 | 【第二步| Find Your Target Position through the Loop】通过循环找到你的目标位置】

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