【问题标题】:Android queried adapter resetAndroid查询适配器重置
【发布时间】:2016-08-09 08:14:26
【问题描述】:

是否可以在不进行新查询的情况下将我的适配器重置为原始状态?

例如

我有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”的微调器。选择全部后,我需要显示所有记录。我从简单的微调器中选择状态 ID,然后调用 selectStatus(myArr, statusId) 问题是当我从数组中删除记录时,我无法将其恢复。

【问题讨论】:

  • 为此,您需要将主列表单独保存在一个变量中,并且过滤器应该应用于该变量的另一个副本,因此在重置时间您可以直接从主变量重置它。
  • 你能展示任何示例代码吗?
  • 在这里给我看你的代码,这样我只会帮你
  • @Vickyexpert 已发布。

标签: android arrays json listview android-adapter


【解决方案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));

【讨论】:

  • 第一个 mainJsons 不是 JSONArray > resetStatus(mainJsons, param);第二个问题是 myArr= modifyJsonArray(arr, param);在这种和平的代码中,它改变了 jsonarray
  • 工作,但它的参数已通过,并且想要恢复完整列表。现在它使用一些参数恢复列表。
  • 我有三个不同 statusId 的项目。当我查询时,我只看到一项。我的目标是恢复所有项目(比如说点击按钮)
  • 为此,您需要将适配器代码放在这里,因为您在适配器中传递参数,所以将您的代码放在这里用于适配器
  • 问题是我有一个带有所有 statusId 和选项“All”的微调器。选择全部后,我需要显示所有记录
猜你喜欢
  • 2017-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-24
  • 2010-12-10
  • 1970-01-01
相关资源
最近更新 更多