繁体   English   中英

无法从 Android Studio 中的 Firebase 数据库读取数据

[英]Not able to read data from Firebase Database in Android Studio

我有一个从网站获取价格、标题等数据的应用程序。 我使用带有 html 解析的 jsoup 获取数据。 我使用不同的 class 进行 html 解析。 我还在我的应用程序中添加了 Firebase 身份验证的会员系统。 每个用户都有不同的产品列表。 产品位于数据库中的用户 ID。 我希望应用程序从数据库表中获取值,但它获取表的标题。 我的问题是从数据库表中获取标题。

您可以在这张照片中看到问题。

您可以在这张照片上看到另一个 class

我怎样才能获得价值?

package com.example.lkuygulama;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.ChildEventListener;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import java.util.ArrayList;

public class UrunEklemeActivity extends AppCompatActivity {
        FirebaseDatabase firebaseDatabase;
        DatabaseReference reference;
        private String userId;
        private FirebaseAuth.AuthStateListener mAuthlistener;
        public ArrayList<String> goster = new ArrayList<String>();
        ListView view;
        ArrayAdapter<String> arrayAdapter;
        public Button aramam,bildirim,liste;
        private FirebaseAuth mAuth;


    @Override
    protected void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_urun_ekleme);

        Urun urun = new Urun();

        bildirim=(Button) findViewById(R.id.bildirimButon);
        liste = (Button) findViewById(R.id.urunListeButon);
        view=(ListView)findViewById(R.id.listele);
        arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,goster);

    view.setAdapter(arrayAdapter);

        mAuthlistener = new FirebaseAuth.AuthStateListener() {
            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                FirebaseUser user = mAuth.getCurrentUser();
                userId = user.getUid();
            }
        };


        tanimla();
        listele();

            bildirim.setOnClickListener(new View.OnClickListener() {
                   @Override
                   public void onClick(View view) {
                        gonderBildirim();
                   }
               });
    }

    private void tanimla() {
        firebaseDatabase = FirebaseDatabase.getInstance();
        reference = firebaseDatabase.getReference();
    }

    private void listele() {

        reference.child("urunler").addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {


                    String valeu =dataSnapshot.getKey();
                    goster.add(valeu);
                    arrayAdapter.notifyDataSetChanged();
            }

            @Override
            public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

            }

            @Override
            public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {

            }

            @Override
            public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

            }

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

            }


        });
    }


    private void gonderBildirim() {
        Intent intent = new Intent(this, BildirimActivity.class);
        startActivity(intent);
    }

    private void gonderAra() {
        Intent intent = new Intent(this,AramaActivity.class);
        startActivity(intent);
    }

    private void gonderListe() {
        Intent intent = new Intent(this, MainActivity.class);
        startActivity(intent);
    }
}



您应该使用 getValue(String.class)。 像这样:

        @Override
        public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
            String valeu =dataSnapshot.getValue(String.class);
            goster.add(valeu);
            arrayAdapter.notifyDataSetChanged();
        }

我推荐addListenerForSingleValueEvent而不是addChildEventListener

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM