Ich habe einen RecyclerView mit auswählbaren Elementen darin. Wenn ein Element ausgewählt ist, lege ich ein neues Feld in sein JSONObject ("selected": true). Im Folgenden ist mein JSONArray von logcat (filterList) genannt.Entfernen Sie bestimmte Werte in einem JSONArray
Das ist mein FilteredList JSON:
[{
"nr": 1,
"grpnr": 0,
"bezeich": "MORE SALT",
"selected": true
}, {
"nr": 2,
"grpnr": 0,
"bezeich": "MORE SWEET"
}, {
"nr": 3,
"grpnr": 0,
"bezeich": "MORE PEPPER"
}, {
"nr": 4,
"grpnr": 0,
"bezeich": "MORE CHILLI",
"selected": true
}, {
"nr": 5,
"grpnr": 0,
"bezeich": "COLD"
}, {
"nr": 6,
"grpnr": 0,
"bezeich": "HOT"
}, {
"nr": 7,
"grpnr": 0,
"bezeich": "SMALL"
}, {
"nr": 8,
"grpnr": 0,
"bezeich": "LARGE"
}, {
"nr": 9,
"grpnr": 0,
"bezeich": "MEDIUM COOKED"
}, {
"nr": 10,
"grpnr": 0,
"bezeich": "WELL DONE"
}]
ich meine FilteredList JSON sieht wie folgt aus (im Wesentlichen die Beseitigung aller selected
Felder) machen möchten:
[{
"nr": 1,
"grpnr": 0,
"bezeich": "MORE SALT"
}, {
"nr": 2,
"grpnr": 0,
"bezeich": "MORE SWEET"
}, {
"nr": 3,
"grpnr": 0,
"bezeich": "MORE PEPPER"
}, {
"nr": 4,
"grpnr": 0,
"bezeich": "MORE CHILLI"
}, {
"nr": 5,
"grpnr": 0,
"bezeich": "COLD"
}, {
"nr": 6,
"grpnr": 0,
"bezeich": "HOT"
}, {
"nr": 7,
"grpnr": 0,
"bezeich": "SMALL"
}, {
"nr": 8,
"grpnr": 0,
"bezeich": "LARGE"
}, {
"nr": 9,
"grpnr": 0,
"bezeich": "MEDIUM COOKED"
}, {
"nr": 10,
"grpnr": 0,
"bezeich": "WELL DONE"
}]
Wie wir sehen, einige Objekt habe das Feld "selected"
. Ich möchte wissen, wie man nur dieses Feld löscht. Ich versuchte this und this, aber es funktioniert nicht in meinem Fall. Jede Antwort wird helfen, danke im Voraus!
Es funktioniert nicht, weil meine CheckBox nur das letzte überprüfte Element entfernt.
hier ist mein Code-Schnipsel:
JSONObject check = new JSONObject();
try {
check = orderList.getJSONObject(intCurrArticleNr);
} catch (JSONException e) {
e.printStackTrace();
}
if(check.has("spesial-request")) {
try {
String arrayRemarkString = check.getString("spesial-request");
if (remarkObj.toString().equalsIgnoreCase(arrayRemarkString)) {
currRemark = new JSONArray(check.getString("spesial-request"));
edt_reqList.setText(currRemark.toString().trim());
System.out.println(currRemark);
}
else {
}
} catch (JSONException e) {
e.printStackTrace();
}
}
else {
// here i have a probelem //
remarkObj = new JSONArray();
// objectReqList.remove("selected");
int len = filteredReqList.length();
JSONArray teslist = new JSONArray();
if (filteredReqList == null) {
for (int i=0;i<len;i++){
filteredReqList.remove(i);
}
}
}
Was meinen Sie es nicht funktioniert? Wird eine Ausnahme ausgelöst? Werden die Felder nicht einfach entfernt? Bitte erläutern. Zeigen Sie uns auch die erwartete json gegen die json Sie erhalten. Schließlich wäre ein Code schön, damit wir sehen können, was Sie falsch machen. – nbokmans
Sorry, ich bearbeite –
Während Sie Ihre Recycler-Ansicht ausfüllen, prüfen Sie, ob "ausgewählt" vorhanden ist, und legen Sie sie nicht in die Recycler-Ansicht. sein eine andere Annäherung kann auch dort sein. –