Как показать выбор данных из базы данных Firebase в макете - PullRequest
0 голосов
/ 11 июня 2019

Я делаю приложение интернет-магазина, в разделе «Мой заказ» я просто хочу отобразить данные «Заказы» по номеру телефона онлайн-пользователя. Я хочу отобразить выбор данных из базы данных Firebase.

Я направил данные

.child("Orders")
.child(Prevalent.currentOnlineUser.getPhone());

But Error "Не удалось преобразовать объект типа java.lang.string

public class MyOrdersActivity extends AppCompatActivity {

private RecyclerView myOrderList;
private DatabaseReference myOrdersRef;

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

    myOrdersRef = FirebaseDatabase.getInstance().getReference()
            .child("Orders")
            .child(Prevalent.currentOnlineUser.getPhone());

    myOrderList = findViewById(R.id.myOrders_list);
    myOrderList.setLayoutManager(new LinearLayoutManager(this));
}

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


    FirebaseRecyclerOptions<UserOrders> options =
            new FirebaseRecyclerOptions.Builder<UserOrders>()
                    .setQuery(myOrdersRef, UserOrders.class)
                    .build();

    FirebaseRecyclerAdapter<UserOrders,MyOrdersActivity.UserOrdersViewHolder> adapter =
            new FirebaseRecyclerAdapter<UserOrders, MyOrdersActivity.UserOrdersViewHolder>(options) {
                @Override
                protected void onBindViewHolder(@NonNull MyOrdersActivity.UserOrdersViewHolder holder, final int position, @NonNull final UserOrders model)
                {
                    holder.MYuserName.setText("Nama : " + model.getName());
                    holder.MYuserPhoneNumber.setText("Nomor Telepon : " + model.getPhone());
                    holder.MYuserTotalprice.setText("Total Harga = Rp " + model.getTotalAmount());
                    holder.MYuserDateTime.setText("Dipesan Pada: " + model.getDate() + " " + model.getTime());
                    holder.MYusershippingAddress.setText("Alamat: " + model.getAddress() + ", " + model.getCity());`enter code here`
                    holder.MYorderstate.setText("Status: "+ model.getState());

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

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

И мой превалент

public class Prevalent {
    public static Users currentOnlineUser;

    public static final String UserPhoneKey = "UserPhone";
    public static final String UserPasswordKey = "UserPassword";
}

А это мой пожарный ребенок (приказы)

структура базы огня

Я просто хочу отобразить данные «Заказы» по номеру телефона, который находится в сети

Мой класс UserOrders

public class UserOrders
{
    private String name, phone, address, city, state, date, time, totalAmount;

    public UserOrders()
    {

    }

    public UserOrders(String name, String phone, String address, String city, String state, String date, String time, String totalAmount) {
        this.name = name;
        this.phone = phone;
        this.address = address;
        this.city = city;
        this.state = state;
        this.date = date;
        this.time = time;
        this.totalAmount = totalAmount;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

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

    public String getTotalAmount() {
        return totalAmount;
    }

    public void setTotalAmount(String totalAmount) {
        this.totalAmount = totalAmount;
    }
}

1 Ответ

1 голос
/ 11 июня 2019

изменить это:

  myOrdersRef = FirebaseDatabase.getInstance().getReference()
            .child("Orders")
            .child(Prevalent.currentOnlineUser.getPhone());

на это:

  myOrdersRef = FirebaseDatabase.getInstance().getReference()
            .child("Orders")
            .orderByKey();
            .equalTo(Prevalent.currentOnlineUser.getPhone());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...