回收者视图项目未使用Firebase加载

时间:2020-02-13 09:12:54

标签: android firebase firebase-realtime-database firebaseui

启动代码

@Override
public void onStart() {
    super.onStart();

    DatabaseReference cartlistref = FirebaseDatabase.getInstance().getReference("Users").child(firebaseUser.getUid()).child("Cart");


    FirebaseRecyclerAdapter<Cart, CartViewHolder> adapter = new FirebaseRecyclerAdapter<Cart, CartViewHolder>(
            Cart.class,
            R.layout.cart_items,
            CartViewHolder.class,
            cartlistref
    ) {
        @Override
        protected void populateViewHolder(CartViewHolder holder, Cart cart, int i) {
            holder.pname.setText(cart.getName());
            holder.pprice.setText(cart.getPrice());
            //holder.quantity.setNumber(cart.getQuantity());
        }
    };

    adapter.notifyDataSetChanged();
    recyclerView.setAdapter(adapter);
}    

CartViewHolder代码

public class CartViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public TextView pname,pprice ;
public ImageView pimage;
public ElegantNumberButton quantity;
ItemClickListener itemClickListener;

public CartViewHolder(@NonNull View itemView) {
    super(itemView);
    pname = itemView.findViewById(R.id.pname);
    pprice = itemView.findViewById(R.id.pprice);
    quantity = itemView.findViewById(R.id.qty);
    pimage = itemView.findViewById(R.id.pimage);
}

@Override
public void onClick(View v) {

    itemClickListener.onClick(v,getAdapterPosition(),false);
}

public void setItemClickListener(ItemClickListener itemClickListener) {
    this.itemClickListener = itemClickListener;
}

}
购物车xml代码

<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:padding="16dp"
    android:layout_height="160dp"
    android:background="?attr/selectableItemBackground"
    android:clickable="true">

    <ImageView
        android:id="@+id/pimage"
        android:layout_width="151dp"
        android:layout_height="match_parent"
        app:srcCompat="@drawable/basket" />

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="150dp">

        <TextView
            android:id="@+id/pname"
            android:layout_width="match_parent"
            android:layout_height="57dp"
            android:text="Product Name"
            android:textSize="25sp"
            android:textAlignment="center"
            android:layout_gravity="center"
            android:textAppearance="@style/TextAppearance.AppCompat.Medium"
            android:textColor="@android:color/black"
            android:textStyle="normal|bold" />

        <TextView
            android:text="Product price"
            android:textSize="18sp"
            android:textAlignment="center"
            android:layout_gravity="center"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/pprice"
            android:layout_marginTop="4dp" />
        <com.cepheuen.elegantnumberbutton.view.ElegantNumberButton
            android:textSize="18sp"
            android:layout_width="200dp"
            android:layout_height="50dp"
            android:id="@+id/qty"
            android:visibility="visible"
            android:layout_marginTop="10dp"
            android:layout_gravity="center"/>
    </LinearLayout>

</androidx.cardview.widget.CardView>

购物车片段代码

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:fancy="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.hackathon.shoppy.fragments.CartFragment">

    <RelativeLayout
        android:id="@+id/rill"
        android:background="@color/colorPrimaryDark"
        android:layout_alignParentTop="true"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:id="@+id/totalamt"
            android:textSize="20sp"
            android:gravity="center"
            android:textAlignment="center"
            android:textColor="@android:color/white"
            android:text="Total Amount = "
            android:layout_width="match_parent"
            android:layout_height="50dp"/>

    </RelativeLayout>

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/cartList"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        fancy:layout_constraintBottom_toTopOf="@+id/EditDetails"
        fancy:layout_constraintEnd_toEndOf="parent"
        fancy:layout_constraintStart_toStartOf="parent"
        fancy:layout_constraintTop_toTopOf="parent"
        android:layout_below="@+id/rill"
        android:layout_above="@+id/checkout"/>

    <mehdi.sakout.fancybuttons.FancyButton
        android:id="@+id/checkout"
        android:layout_width="280dp"
        android:layout_height="66dp"
        android:layout_alignParentBottom="true"
        android:layout_centerInParent="true"
        android:textSize="20sp"
        fancy:fb_defaultColor="#7ab800"
        fancy:fb_radius="10dp"
        fancy:fb_text="Proceed To Checkout"
        fancy:fb_textColor="#FFFFFF" />

</RelativeLayout> 

Firebase数据库结构
Here is the firebase database structure

我已经尝试了上面的代码
我要从Firebase数据库加载特定用户的购物车商品
视图正在加载,但是回收者视图中的项目没有显示
该应用程序也不会崩溃,并且logcat中没有错误

2 个答案:

答案 0 :(得分:0)

<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/cartList"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    fancy:layout_constraintBottom_toTopOf="@+id/EditDetails"
    fancy:layout_constraintEnd_toEndOf="parent"
    fancy:layout_constraintStart_toStartOf="parent"
    fancy:layout_constraintTop_toTopOf="parent"
    android:layout_below="@+id/rill"
    android:layout_above="@+id/checkout"/>

这是您的问题。您正在告诉回收者视图“包装内容”。问题是,在创建时,内容为空,因此回收者视图的高度为零。 尝试使用

    android:layout_width="match_parent"
    android:layout_height="match_parent"

并尝试身高。但是宽度最好留给match_parent

答案 1 :(得分:0)

我认为是因为包装内容的原因,请尝试在recylerview中用蓝色或其他颜色填充颜色,如果看不到,请更改以匹配父级