是否可以将我的适配器重置为原始状态,而无需进行新查询?
例如
我有JSONArray
,我剪切了一些要在ListView
中显示的记录,但我想重置数据并再次显示所有记录。那可能吗?
private JSONArray modifyJsonArray(JSONArray array, final Integer param) throws JSONException {
List<JSONObject> jsons = new ArrayList<JSONObject>();
for (int i = 0; i < array.length(); i++) {
Integer statusId = Integer.parseInt(array.getJSONObject(i).getString("statusId"));
if (statusId == param){
jsons.add(array.getJSONObject(i));
}
}
return new JSONArray(jsons);
}
private void selectStatus(JSONArray arr, Integer param) throws JSONException {
myArr= modifyJsonArray(arr, param);
adapter.notifyDataSetChanged();
}
我有一个带有所有statusId和选项“All”的微调器。当选择all时我需要显示所有记录。我从简单的微调器中选择状态id,然后调用selectStatus(myArr, statusId)
问题是当我从数组中删除记录时,我无法恢复它。
答案 0 :(得分:1)
现在阅读以下说明并按照您的解决方案进行操作,
首先在变量外部方法上创建,如下所示
List<JSONObject> mainJsons = new ArrayList<JSONObject>();
现在修改您的modifyJsonArray方法,如下所示
private JSONArray modifyJsonArray(JSONArray array, final Integer param) throws JSONException
{
List<JSONObject> jsons = new ArrayList<JSONObject>();
mainJsons = new ArrayList<JSONObject>();
for (int i = 0; i < array.length(); i++)
{
Integer statusId = Integer.parseInt(array.getJSONObject(i).getString("statusId"));
mainJsons.add(array.getJSONObject(i));
if (statusId == param)
{
jsons.add(array.getJSONObject(i));
}
}
return new JSONArray(jsons);
}
现在创建一个重置主数组的方法,如下所示
private void resetStatus(JSONArray arr) throws JSONException
{
if(arr != null && arr. size() > 0)
{
myArr = arr;
adapter.notifyDataSetChanged();
}
}
现在调用此方法,如下所示,您要重置listviw
resetStatus(new JSONArray(mainJsons));