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