com.google.firebase.database.DatabaseException: невозможно преобразовать объект типа java.lang.String в тип com.pasarkaget.fajar.pasarkaget.Model.Payments - PullRequest
1 голос
/ 17 июня 2019

У меня проблема с получением данных о платежах. Всегда говорится, что я не могу преобразовать тип объекта в:

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();
            }
        }

Класс моего виджета

          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;
                }
            }

Моя база данных Firebase структурирована:

моя структурированная база огня

1 Ответ

0 голосов
/ 18 июня 2019

Когда вы передаете свой paymentsRef объекту FirebaseRecyclerOptions<Payments>, это означает, что вы ищете Payments объекты, но в вашей ссылке есть только объекты типа String и , а не * 1006. * и вот почему вы получаете эту ошибку. Чтобы решить эту проблему, просто удалите вызов на .child("Payments"):

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

И вы сможете получить все Payments объекты, которые существуют в вашем userID узле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...