如何从简单的Cloud Firestore结构检索数据

时间:2019-07-16 14:34:54

标签: android firebase firebase-realtime-database google-cloud-firestore

我正在尝试从Cloud Firestore数据库检索简单数据。 使用以下代码,我试图显示“ prodotti”集合中的2个属性,但是不显示烤面包消息,也不显示日志消息。请问有人可以找到问题吗? (该项目是他的起点,不要因为公共规则而怪我,但我试图了解基本原理是什么)

这是数据库结构:

Database structure screenshot

我尝试读取这些数据的片段:

public class FragmentHome extends Fragment {

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View fragmentHomeView=inflater.inflate(R.layout.fragment_layout_home_vuoto, container, false);
        return fragmentHomeView;
    }

    //debug message
    //Toast.makeText(getContext(), "debug", Toast.LENGTH_LONG).show();

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        DatabaseReference root= FirebaseDatabase.getInstance().getReference();
        final DatabaseReference prodotti= root.child("prodotti");
        final TextView nulla=(TextView) view.findViewById(R.id.textCarrelloVuoto);
        ImageView carr=(ImageView) view.findViewById(R.id.immagineCarrelloVuoto);
        ValueEventListener vel=new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                String line="";
                for(DataSnapshot ds : dataSnapshot.getChildren()){
                    String nome=ds.child("nome").getValue(String.class);
                    String ndisp=ds.child("ndisp").getValue(String.class);
                    line.concat(nome+" "+ndisp);
                    Toast.makeText(getContext(), line, Toast.LENGTH_LONG).show();
                }
                Log.i("TAG", line);
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        };
        prodotti.addListenerForSingleValueEvent(vel);

    }

}

“ Prodotti”类:

public class Prodotti {

    public int id;
    public String nome;
    public boolean disponibile;
    public int ndisp;

    public Prodotti(){
        //chiamate da dataSnapshot
    }

    public Prodotti(int fid, String fnome, boolean fdisp, int fndisp){
        this.id=fid;
        this.nome=fnome;
        this.ndisp=fndisp;
        this.disponibile=fdisp;
    }

}

1 个答案:

答案 0 :(得分:0)

此代码无法访问Cloud Firestore。它正在访问实时数据库。屏幕截图显示了Cloud Firestore,但是代码永远不会看到该数据,因为它是完全不同的数据库产品。

请使用documentation for Cloud Firestore学习如何使用它。