从特定位置从Firebase获取数据

时间:2019-04-20 11:38:39

标签: android firebase firebase-realtime-database

嘿,我正在编写一个应用程序,该应用程序必须使用listView中项目的位置从firebase中获取特定数据。我的问题是我不知道该如何在Firebase上使用它。

enter image description here

对于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是元素在列表视图中的位置。

感谢答案。

2 个答案:

答案 0 :(得分:2)

更改以下内容:

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的值

答案 1 :(得分:0)

很简单。

【步骤1 |获取快照数据并保存在全局变量中

xhtml

【步骤2 |通过循环找到目标位置】

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