我成功解析了json数据,我可以在我的recyclerView上显示它。
它是我的数据来源:
(解决了这个问题)
我想设置一个关于month > 5
我之前设置了String.equal("compareString");
,它有效。
但是当我在这种情况下设定月份时,它不起作用。
我设置错了吗?任何帮助都将不胜感激。
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();
}
}
另一个问题,如果我的数据是467~500,我的列表将从上到下显示467~500,如果我想让它从上到下显示500~467,我该怎么办才更正确?
我尝试了一些代码:它显示为空
String month="5";
if (month.equals(jsonArray.getJSONObject(i).getString("STARTMONTH"))) {
other code...
}
但如果我尝试像这样比较EDUIN:它有效......
String eduin="0";
if (eduin.equals(jsonArray.getJSONObject(i).getString("EDUIN"))) {
other code...
}
我现在不明白:(
答案 0 :(得分:1)
问题是因为这条线可能无法执行条件
String arrayData = jsonObject.getString("JsonData");
在您的回复中,“JsonData”是JSONArray
而不是String
。
试试这个。
JSONObject jsonObject = new JSONObject(route);
JSONArray jsonArray = jsonObject.getJSONArray("JsonData") ;
for (int i = 467; i < jsonArray.length(); i++) {
//rest of your code
}
现在,如果您想要从500到467的项目反转循环
for(int i = jsonArray.length()-1; i >= 467; i--){
if(Integer.parseInt(jsonArray.getJSONObject(i).getString("STARTMONTH"))>=month){
// rest of the 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);