[英]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.