簡體   English   中英

適配器未獲得 boolean 值來設置微調器選擇

[英]Adapter not getting boolean values to set spinner selection

我正在使用 firebase 回收器選項從 firebase 數據庫中檢索所需的數據,在本例中為 3 boolean 值。 在適配器中,我發現檢索到的所有 boolean 值都是假的。 但是,當我啟動活動和 select 微調器時,微調器在 firebase 數據庫中正確設置了 boolean 值。 此外,微調器上的選擇未根據數據正確設置,因為它檢索數據庫中的所有錯誤。

我附加了我的助手 class、適配器 onbindviewholder 和 onitemselected。

BookingModal.class

public class BookingModal {

    private String DATE;
    private String TIME;
    private String UID;
    private boolean approved;
    private boolean pending;
    private boolean rejected;

    public BookingModal(String DATE, String TIME, String UID, boolean approved, boolean pending, boolean rejected) {
        this.DATE = DATE;
        this.TIME = TIME;
        this.UID = UID;
        this.approved = approved;
        this.pending = pending;
        this.rejected = rejected;
    }
    public BookingModal(){}

    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 getUID() {
        return UID;
    }

    public void setUID(String UID) {
        this.UID = UID;
    }


    public boolean Approved() {
        return approved;
    }

    public void setApproved(boolean approved) {
        this.approved = approved;
    }

    public boolean Pending() {
        return pending;
    }

    public void setPending(boolean pending) {
        this.pending = pending;
    }

    public boolean Rejected() {
        return rejected;
    }

    public void setRejected(boolean rejected) {
        this.rejected = rejected;
    }
}

適配器 onbindviewholder class。

  @Override
    protected void onBindViewHolder(@NonNull BookingVH holder, int position, @NonNull BookingModal model) {

        holder.date.setText(model.getDATE());

        UserModal userModalDetail = findbyProperty(userModalList, model.getUID());
        if (userModalDetail != null) {
            holder.name.setText(userModalDetail.getName());
            holder.matric.setText(userModalDetail.getMatricnumber());
            onStatusSelected.onSelected(holder.status, userModalDetail.getUID(), model);
        }

        Log.d("booleanvalue", model.Pending() + " - "+model.Approved()+" - "+model.Rejected());



    }

onitemsselected 微調器

 @Override
    public void onSelected(Spinner v, String uid, BookingModal modal) {
        Log.d("modalboolean", String.valueOf(modal.Approved()));
        v.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                checker.clear();
                if (i == 0){
                    mDatabase.child("Bookings").child("Kompleks Sukan A").child("Pending").child(uid).child("isPending").setValue(true);
                    mDatabase.child("Bookings").child("Kompleks Sukan A").child("Pending").child(uid).child("isApproved").setValue(false);
                    mDatabase.child("Bookings").child("Kompleks Sukan A").child("Pending").child(uid).child("isRejected").setValue(false);

                } else if (i == 1){
                    mDatabase.child("Bookings").child("Kompleks Sukan A").child("Pending").child(uid).child("isApproved").setValue(true);
                    mDatabase.child("Bookings").child("Kompleks Sukan A").child("Pending").child(uid).child("isPending").setValue(false);
                    mDatabase.child("Bookings").child("Kompleks Sukan A").child("Pending").child(uid).child("isRejected").setValue(false);


                } else if (i == 2){
                    mDatabase.child("Bookings").child("Kompleks Sukan A").child("Pending").child(uid).child("isRejected").setValue(true);
                    mDatabase.child("Bookings").child("Kompleks Sukan A").child("Pending").child(uid).child("isApproved").setValue(false);
                    mDatabase.child("Bookings").child("Kompleks Sukan A").child("Pending").child(uid).child("isPending").setValue(false);

                }
                v.setSelection(i, true);

                Log.d("CheckerMap", checker.toString());
//                mDatabase.child("Bookings").child("Kompleks Sukan A").child("Pending").child(uid).updateChildren(checker);
            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {

            }
        });
    }

非常感謝您的幫助。 先感謝您 !

已編輯

這是我的 json 數據庫結構

{
  "Admin": {
    "e7oK2kaWLDW5SdSnBS1KEKXazNH3": {
      "admin": true,
      "departmentnumber": "",
      "email": "admin@mail.com",
      "matricnumber": "",
      "name": "admin1",
      "password": "admin123",
      "phonenumber": ""
    }
  },
  "Bookings": {
    "Kompleks Sukan A": {
      "Pending": {
        "AQ7W0xjc0kYZTg7mz5LH8m7wAXF3": {
          "DATE": "19/01/2023",
          "TIME": "1-2PM",
          "UID": "AQ7W0xjc0kYZTg7mz5LH8m7wAXF3",
          "isApproved": true,
          "isPending": false,
          "isRejected": false
        },
        "a59Pmpt9kvNTO6yFjXspGRqmlGh1": {
          "date": "26/01/2023",
          "isApproved": false,
          "isPending": false,
          "isRejected": true,
          "time": "1-2PM",
          "uid": "a59Pmpt9kvNTO6yFjXspGRqmlGh1"
        }
      }
    }
  },
  "Kompleks Sukan A": {
    "1-2PM": false,
    "10-11AM": false,
    "11-12PM": false,
    "12-1PM": false,
    "2-3PM": false,
    "3-4PM": false,
    "4-5PM": false,
    "5-6PM": false,
    "6-7PM": false,
    "9-10AM": false
  },
  "Users": {
    "AQ7W0xjc0kYZTg7mz5LH8m7wAXF3": {
      "admin": false,
      "departmentnumber": "",
      "email": "user1@mail.com",
      "matricnumber": "",
      "name": "test",
      "password": "user123",
      "phonenumber": "",
      "uid": "AQ7W0xjc0kYZTg7mz5LH8m7wAXF3"
    },
    "a59Pmpt9kvNTO6yFjXspGRqmlGh1": {
      "admin": false,
      "departmentnumber": "",
      "email": "ceyn@mail.com",
      "matricnumber": "53104119052",
      "name": "ceyn",
      "password": "ceyn123",
      "phonenumber": "01112872692",
      "uid": "a59Pmpt9kvNTO6yFjXspGRqmlGh1"
    }
  }
}

在您的POJO類中,您已聲明

private boolean approved;
private boolean pending;
private boolean rejected;

在生成構建時,android 更改boolean類型的變量名稱。

為防止這種變化,您可以將 model 類保留在Proguard Rules中,如下所示:

-keep class com.example.myapplication.models.**

將所有類保留在models package 下。現在它不會更改變量的名稱。

我最終使用單個字符串作為狀態檢查。 改變它更容易與微調器一起使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM