Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
com.google.firebase.database.DatabaseException:Can';t将java.lang.String类型的对象转换为com.pasarkaget.fajar.pasarkaget.Model.Payments类型_Java_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

com.google.firebase.database.DatabaseException:Can';t将java.lang.String类型的对象转换为com.pasarkaget.fajar.pasarkaget.Model.Payments类型

com.google.firebase.database.DatabaseException:Can';t将java.lang.String类型的对象转换为com.pasarkaget.fajar.pasarkaget.Model.Payments类型,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我在检索付款数据时遇到问题。它总是说我不能将对象类型转换为: com.google.firebase.database.DatabaseException:无法转换对象 类型为java.lang.String的 com.pasarkaget.fajar.pasarkaget.Model.Payments 我认为这个错误来自我的付款模式,但我不知道我的错误。有人能帮我吗 这是My AdminUserPaymentsActivity,我必须在其中显示特定用户的付款数据 public class A

我在检索付款数据时遇到问题。它总是说我不能将对象类型转换为:

com.google.firebase.database.DatabaseException:无法转换对象 类型为java.lang.String的 com.pasarkaget.fajar.pasarkaget.Model.Payments

我认为这个错误来自我的付款模式,但我不知道我的错误。有人能帮我吗

这是My AdminUserPaymentsActivity,我必须在其中显示特定用户的付款数据

 public class AdminUserPaymentActivity extends AppCompatActivity
        {
            private RecyclerView paymentsList;
            RecyclerView.LayoutManager layoutManager;
            private DatabaseReference paymentsRef;

            private String userID = "";


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

                userID = getIntent().getStringExtra("uid");

                paymentsList = findViewById(R.id.payments_list);
                paymentsList.setHasFixedSize(true);
                layoutManager = new LinearLayoutManager(this);
                paymentsList.setLayoutManager(layoutManager);


                paymentsRef = FirebaseDatabase.getInstance().getReference()
                        .child("Cart List").child("Admin View").child(userID).child("Payments");
            }

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

                FirebaseRecyclerOptions<Payments> options =
                        new FirebaseRecyclerOptions.Builder<Payments>()
                                .setQuery(paymentsRef, Payments.class)
                                .build();


                FirebaseRecyclerAdapter<Payments, PaymentsViewHolder> adapter = new FirebaseRecyclerAdapter<Payments, PaymentsViewHolder>(options) {
                    @Override
                    protected void onBindViewHolder(@NonNull PaymentsViewHolder holder, int position, @NonNull Payments model)
                    {
                                holder.txtMyBankName.setText(model.getBuyerBank());
                                holder.txtBankAccountName.setText(model.getBuyerAccount());
                                holder.txtBankName.setText(model.getBank());
                                holder.txtMetods.setText(model.getMetods());
                                holder.txtTotalTransfer.setText("Rp " + model.getNominal());
                                holder.txtState.setText(model.getState());
                                holder.txtDate.setText("Pada Tanggal : " + model.getDate());
                    }

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

                paymentsList.setAdapter(adapter);
                adapter.startListening();
            }
        }
我的Firebase数据库结构:


当您将您的
paymentsRef
传递给
FirebaseRecyclerOptions
对象时,这意味着您正在查找
付款
对象,但在您的引用中,只有String和类型的对象,而不是
付款
,这就是您出现该错误的原因。要解决此问题,只需删除对
.child(“付款”)
的调用:


您将能够获取
用户ID
节点中存在的所有
付款
对象。

当您将
付款传递给
FirebaseRecyclerOptions
对象时,这意味着您正在查找
付款
对象,但在您的引用中,只有String和类型的对象,而不是
支付
,这就是为什么会出现该错误。要解决此问题,只需删除对
.child(“付款”)
的调用:


您将能够获取
用户ID
节点中存在的所有
支付
对象。

这项工作可以完成,但还有一个附加的具有空值的cardview。关于第二个问题,请使用自己的问题发布另一个新问题,因此,我和其他Firebase开发人员可以帮助您。这项工作,但还有一个附加的cardview,其值为空。关于第二个问题,请使用它自己的问题发布另一个新问题,以便我和其他Firebase开发人员可以帮助您。
          public class PaymentsViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener
            {
                public TextView txtBankName, txtMyBankName, txtBankAccountName, txtTotalTransfer, txtMetods, txtState, txtDate;
                private ItemClickListener itemClickListener;


                public PaymentsViewHolder(View itemView)
                {
                    super(itemView);

                    txtBankName = itemView.findViewById(R.id.payments_bank_destination);
                    txtMyBankName = itemView.findViewById(R.id.payments_bank_name);
                    txtBankAccountName = itemView.findViewById(R.id.payments_bank_account);
                    txtTotalTransfer = itemView.findViewById(R.id.payments_total_transfer);
                    txtMetods = itemView.findViewById(R.id.payments_bank_metods);
                    txtState = itemView.findViewById(R.id.payments_state);
                    txtDate = itemView.findViewById(R.id.payments_date);

                }

                @Override
                public void onClick(View view)
                {
                    itemClickListener.onClick(view, getAdapterPosition(), false);
                }

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

    And Lastly, My Model Payments class



         public class Payments
            {
                private String bank, buyerBank, buyerAccount, nominal, metods, state, date, time;

            public Payments()
            {

            }

            public Payments(String bank, String buyerBank, String buyerAccount, String nominal, String metods, String state, String date, String time)
            {
                this.bank = bank;
                this.buyerBank = buyerBank;
                this.buyerAccount = buyerAccount;
                this.nominal = nominal;
                this.metods = metods;
                this.state= state;
                this.date = date;
                this.time = time;
            }

            public String getBank() {
                return bank;
            }

            public void setBank(String bank) {
                this.bank = bank;
            }

            public String getBuyerBank() {
                return buyerBank;
            }

            public void setBuyerBank(String buyerBank) {
                this.buyerBank = buyerBank;
            }

            public String getBuyerAccount() {
                return buyerAccount;
            }

            public void setBuyerAccount(String buyerAccount) {
                this.buyerAccount = buyerAccount;
            }

            public String getNominal() {
                return nominal;
            }

            public void setNominal(String nominal) {
                this.nominal = nominal;
            }

            public String getMetods() {
                return metods;
            }

            public void setMetods(String metods) {
                this.metods = metods;
            }

            public String getState() {
                return state;
            }

            public void setState(String state) {
                this.state = state;
            }

            public String getDate() {
                return date;
            }

            public void setDate(String date) {
                this.date = date;
            }

            public String getTime() {
                return time;
            }

            public void setTime(String time) {
                this.time = time;
                }
            }
paymentsRef = FirebaseDatabase.getInstance().getReference()
                    .child("Cart List").child("Admin View").child(userID);