【发布时间】:2017-06-25 18:33:21
【问题描述】:
我有一个包含可选项目的 RecyclerView。如果选择了一个项目,我会在它的 JSONObject("selected": true) 中放置一个新字段。下面是我的来自 logcat 的 JSONArray,称为 (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"
}]
我想让我的过滤列表 JSON 看起来像这样(基本上删除所有 selected 字段):
[{
"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"
}]
如我们所见,某些对象具有字段"selected"。我想知道如何只删除这个字段。我尝试了this 和this,但在我的情况下它不起作用。任何答案都会有所帮助,在此先感谢!
它不起作用,因为我的 CheckBox 只删除了最后一个选中的项目。
这是我的代码 sn-p:
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);
}
}
}
【问题讨论】:
-
你的意思是它不工作?它会抛出异常吗?它只是不删除字段吗?请详细说明。还向我们展示了预期的 json 与你得到的 json。最后一些代码会很好,所以我们可以看到你做错了什么
-
对不起,我会编辑
-
在填充 Recycler 视图时检查
selected是否存在,然后不要将其放入 recycler 视图中。它的一种方法也可能存在。 -
@jackjay 我会试试的,但我还是对这个案子很好奇
-
@MarioMargoPradipta 你可以迭代和删除,在下面查看我的答案 - 我用你的 JSON 测试过,它给了我预期的结果