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

Я хочу отобразить данные списка платежей, если я нажму кнопку checkPayments. когда я нажимаю checkPayments, успешно вошли в AdminUserPayments, но после этого происходит сбой приложения и появляется сообщение об ошибке com.google.firebase.database.DatabaseException:Can't convert object of type java.lang.String to type com.myapplicationname.Model.payments Я думаю, что ошибка в моем классе Модели платежей, но я не могу ее найти. Я объявляю строку в соответствии с textview и моделью платежей.

Это моя активность AdminNewOrders

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

                FirebaseRecyclerOptions<AdminOrders> options =
                        new FirebaseRecyclerOptions.Builder<AdminOrders>()
                        .setQuery(ordersRef, AdminOrders.class)
                        .build();

                FirebaseRecyclerAdapter<AdminOrders,AdminOrdersViewHolder> adapter =
                        new FirebaseRecyclerAdapter<AdminOrders, AdminOrdersViewHolder>(options) {
                            @Override
                            protected void onBindViewHolder(@NonNull AdminOrdersViewHolder holder, final int position, @NonNull final AdminOrders model)
                            {
                                holder.userName.setText("Nama : " + model.getName());
                                holder.userPhoneNumber.setText("Nomor Telepon : " + model.getPhone());
                                holder.userTotalprice.setText("Total Harga = Rp " + model.getTotalAmount());
                                holder.userDateTime.setText("Dipesan Pada: " + model.getDate() + " " + model.getTime());
                                holder.usershippingAddress.setText("Alamat: " + model.getAddress() + ", " + model.getCity());
                                holder.userStatePayments.setText("Status: "+ model.getState());

                                holder.showOrdersBtn.setOnClickListener(new View.OnClickListener() {
                                    @Override
                                    public void onClick(View view)
                                    {
                                        String uID = getRef(position).getKey();

                                        Intent intent = new Intent(AdminNewOrdersActivity.this, AdminUserProductsActivity.class);
                                        intent.putExtra("uid", uID);
                                        startActivity(intent);
                                    }
                                });

                                holder.checkPayments.setOnClickListener(new View.OnClickListener() {
                                    @Override
                                    public void onClick(View view)
                                    {
                                        String uID = getRef(position).getKey();

                                        Intent intent = new Intent(AdminNewOrdersActivity.this, AdminUserPaymentActivity.class);
                                        intent.putExtra("uid", uID);
                                        startActivity(intent);
                                    }
                                });

Это мой класс платежей по модели

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

и это мой код AdminUserPaymentActivity.class

  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_payment_data);

        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("Payments List").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("Bank Pengirim : " + model.getBuyerBank());
                        holder.txtBankAccountName.setText("a/n :  " + model.getBuyerAccount());
                        holder.txtBankName.setText("Bank Penerima : " + model.getBank());
                        holder.txtMetods.setText(" Metode : " + model.getMetods());
                        holder.txtTotalTransfer.setText("Rp " + model.getNominal());
            }

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

Мои платежи ViewHolder

     public class PaymentsViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener
        {
            public TextView txtBankName, txtMyBankName, txtBankAccountName, txtTotalTransfer, txtMetods;
            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);
            }

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

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

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

Список платежей моего ребенка

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