com.google.firebase.database.DatabaseException: No se pudo convertir un valor de tipo java.lang.String a largo

Sathishkumar G:

Estoy recibiendo un error al seguir la documentación de la base de datos base de fuego en el intento de recuperar datos de un objeto para su uso.

Aquí está mi modelo de objetos

public class Cart {

    private String pid, pname, price, discount, quantity;

    public Cart() {
    }

    public Cart(String pid, String pname, String price, String discount, String quantity) {
        this.pid = pid;
        this.pname = pname;
        this.price = price;
        this.discount = discount;
        this.quantity = quantity;
    }

    public String getPid() {
        return pid;
    }

    public void setPid(String pid) {
        this.pid = pid;
    }

    public String getPname() {
        return pname;
    }

    public void setPname(String pname) {
        this.pname = pname;
    }

    public String getPrice() {
        return price;
    }

    public void setPrice(String price) {
        this.price = price;
    }

    public String getDiscount() {
        return discount;
    }

    public void setDiscount(String discount) {
        this.discount = discount;
    }

    public String getQuantity() {
        return quantity;
    }

    public void setQuantity(String quantity) {
        this.quantity = quantity;
    }
}

Y, por último, el código y la línea me sale el error en que se ha comentado.

FirebaseRecyclerOptions<Cart> options =
    new FirebaseRecyclerOptions.Builder<Cart>()
    .setQuery(cartListRef.child("User View")
    .child(Prevalent.currentOnlineUser.getPhn_num())
    .child("Products"), Cart.class)
    .build();

FirebaseRecyclerAdapter<Cart, CartViewHolder> adapter =
    new FirebaseRecyclerAdapter<Cart, CartViewHolder>(options) {
        @Override
        protected void onBindViewHolder(@NonNull CartViewHolder holder, int position, @NonNull Cart model)
        {
            holder.jProductName.setText(model.getPname());
            holder.jProductPrice.setText("Price = Rs. " +model.getPrice());
            holder.jProductQuantity.setText("Quantity = " +model.getQuantity());

        }

        @NonNull
        @Override
        public CartViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i)
        {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.cart_items_layout, parent,false);
            CartViewHolder holder = new CartViewHolder(view);
            return holder;
        }
    };

recyclerView.setAdapter(adapter);
adapter.startListening();

Aquí está mi estructura de base de datos en Firebase.

introducir descripción de la imagen aquí

Y el StackTrace completa de Logcat está aquí.

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.dueaoinfo.shoppingapp, PID: 10511
com.google.firebase.database.DatabaseException: Failed to convert a value of type java.lang.String to long
    at com.google.android.gms.internal.firebase_database.zzkt.zzb(Unknown Source:616)
    at com.google.android.gms.internal.firebase_database.zzkt.zza(Unknown Source:301)
    at com.google.android.gms.internal.firebase_database.zzkt.zzb(Unknown Source:0)
    at com.google.android.gms.internal.firebase_database.zzku.zza(Unknown Source:71)
    at com.google.android.gms.internal.firebase_database.zzkt.zzb(Unknown Source:146)
    at com.google.android.gms.internal.firebase_database.zzkt.zza(Unknown Source:0)
    at com.google.firebase.database.DataSnapshot.getValue(Unknown Source:10)
    at com.firebase.ui.database.ClassSnapshotParser.parseSnapshot(ClassSnapshotParser.java:29)
    at com.firebase.ui.database.ClassSnapshotParser.parseSnapshot(ClassSnapshotParser.java:15)
    at com.firebase.ui.common.BaseCachingSnapshotParser.parseSnapshot(BaseCachingSnapshotParser.java:35)
    at com.firebase.ui.common.BaseObservableSnapshotArray.get(BaseObservableSnapshotArray.java:52)
    at com.firebase.ui.database.FirebaseRecyclerAdapter.getItem(FirebaseRecyclerAdapter.java:106)
    at com.firebase.ui.database.FirebaseRecyclerAdapter.onBindViewHolder(FirebaseRecyclerAdapter.java:122)
    at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6781)
    at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6823)
    at android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5752)
    at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6019)
    at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5858)
    at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5854)
    at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2230)
    at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1557)
    at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1517)
    at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:612)
    at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3924)
    at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3641)
    at android.support.v7.widget.RecyclerView.consumePendingUpdateOperations(RecyclerView.java:1888)
    at android.support.v7.widget.RecyclerView$1.run(RecyclerView.java:407)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1092)
    at android.view.Choreographer.doCallbacks(Choreographer.java:888)
    at android.view.Choreographer.doFrame(Choreographer.java:816)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1078)
    at android.os.Handler.handleCallback(Handler.java:873)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:201)
    at android.app.ActivityThread.main(ActivityThread.java:6823)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)
Reaz Murshed:

El quantityy discountson los Longvalores en la base de datos base de fuego, donde en su Cartclase se ha declarado como String. Esto es tirar el error. Declarar la Cartclase como la siguiente.

public class Cart {

    private String pid, pname, price;
    private Long discount, quantity;

    public Cart() {
    }

    public Cart(String pid, String pname, String price, Long discount, Long quantity) {
        this.pid = pid;
        this.pname = pname;
        this.price = price;
        this.discount = discount;
        this.quantity = quantity;
    }

    public String getPid() {
        return pid;
    }

    public void setPid(String pid) {
        this.pid = pid;
    }

    public String getPname() {
        return pname;
    }

    public void setPname(String pname) {
        this.pname = pname;
    }

    public String getPrice() {
        return price;
    }

    public void setPrice(String price) {
        this.price = price;
    }

    public Long getDiscount() {
        return discount;
    }

    public void setDiscount(Long discount) {
        this.discount = discount;
    }

    public Long getQuantity() {
        return quantity;
    }

    public void setQuantity(Long quantity) {
        this.quantity = quantity;
    }
}

Esperanza de que resuelve su problema.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=239818&siteId=1
Recomendado
Clasificación