Android json解析数据集搜索条件无效

Android json解析数据集搜索条件无效,android,Android,我成功解析了json数据,我可以在我的recyclerView上显示它 这是我的数据源: 解决了这个问题 我想设置一个月>5的搜索条件 我设置了一个字符串;以前,它是有效的 但当我在这个案例中设定月份时,它不起作用 我是不是搞错了?任何帮助都将不胜感激 private void showRoute(String route) { try { JSONObject jsonObject = new JSONObject(route);

我成功解析了json数据,我可以在我的recyclerView上显示它

这是我的数据源: 解决了这个问题 我想设置一个月>5的搜索条件

我设置了一个字符串;以前,它是有效的

但当我在这个案例中设定月份时,它不起作用

我是不是搞错了?任何帮助都将不胜感激

    private void showRoute(String route) {
            try {
                JSONObject jsonObject = new JSONObject(route);
                String arrayData = jsonObject.getString("JsonData");
                JSONArray jsonArray = new JSONArray(arrayData);
                Log.d(TAG, "JSONArray" + ">>>>>>>>>>" + jsonArray);

                for (int i = 467; i < jsonArray.length(); i++) {
                    int month=5;//set search condition, i want to show a list , it's month > 5
//here is my search condition
                    if (Integer.parseInt(jsonArray.getJSONObject(i).getString("STARTMONTH"))>=month) {
                        String EDUTITLE = jsonArray.getJSONObject(i).getString("EDUTITLE");
                        String STARTMONTH = jsonArray.getJSONObject(i).getString("STARTMONTH");
                        String STARTDAY = jsonArray.getJSONObject(i).getString("STARTDAY");
                        String STARTDATE = jsonArray.getJSONObject(i).getString("STARTDATE");
                        String SPONSER = jsonArray.getJSONObject(i).getString("SPONSER");
                        String EDUSCORE = jsonArray.getJSONObject(i).getString("EDUSCORE");
                        String EDUIN = jsonArray.getJSONObject(i).getString("EDUIN");
                        String HOLDER = jsonArray.getJSONObject(i).getString("HOLDER");
                        ActivityListItem listItem = new ActivityListItem(EDUTITLE, STARTMONTH, STARTDAY, STARTDATE, SPONSER, EDUSCORE, EDUIN, HOLDER);
                        arrayList.add(listItem);
                    }else {
                        recyclerView.setVisibility(View.GONE);
                        textForEmpty.setVisibility(View.VISIBLE);
                    }
                    //arrayListOrigin.add(listItem);
                }
            } catch (JSONException ex) {
                ex.printStackTrace();
            }
        }
但如果我试着像这样比较EDUIN:它是有效的

String eduin="0";
                if (eduin.equals(jsonArray.getJSONObject(i).getString("EDUIN"))) {
other code...
}

我现在不明白了:

问题是您的if条件可能因为这一行而无法执行 String arrayData=jsonObject.getStringJsonData; 在您的响应中,JsonData是JSONArray而不是字符串。 试试这个

 JSONObject jsonObject = new JSONObject(route);
 JSONArray jsonArray = jsonObject.getJSONArray("JsonData") ;
  for (int i = 467; i < jsonArray.length(); i++) {
    //rest of your code
    }
在循环外部隐藏循环视图,如下所示

   if (arrayList.size() == 0) {
    //hide recycleview
       recyclerView.setVisibility(View.GONE);
       textForEmpty.setVisibility(View.VISIBLE);
}

更简单的方法

ArrayList<Element> tempElements = new ArrayList<Element>(arrayList);
Collections.reverse(tempElements);

虽然你的观点是正确的,但是当我删除搜索条件并尝试forint i=jsonArray.length时,你能添加样本jsontanks@sunil sunny i吗;i>=467;i-{//代码的其余部分..}首先,它显示为空,我不明白它…谢谢。jsonArray.length-1有效,我现在知道了。它教会了我很多东西,但当我在第一个问题中设置月数>=5时,它仍然不起作用:那是因为你隐藏了recycleview。。。删除这些行,然后查看其他{recyclerView.setVisibilityView.GONE;textForEmpty.setVisibilityView.VISIBLE;}如果没有数据,它将隐藏recyclerView,但它必须有数据,如果我将搜索条件设置为month>5,对吗?好,我现在就知道了。我太蠢了…我错过了我脑海中失去的那一点。。。。谢谢@sunil sunny,你帮了我很多,爱你:
   if (arrayList.size() == 0) {
    //hide recycleview
       recyclerView.setVisibility(View.GONE);
       textForEmpty.setVisibility(View.VISIBLE);
}
ArrayList<Element> tempElements = new ArrayList<Element>(arrayList);
Collections.reverse(tempElements);