Android查询适配器重置

时间:2016-08-09 08:14:26

标签: android arrays json listview android-adapter

是否可以将我的适配器重置为原始状态,而无需进行新查询?

例如

我有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)问题是当我从数组中删除记录时,我无法恢复它。

1 个答案:

答案 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));
相关问题