
我正在排序JSONArray并在自定义列表视图中显示它们,但排序后数据在自定义列表视图中没有更改.
这是我的fab按钮代码,用于选择要执行的排序:
fab.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw vIEw) { AlertDialog.Builder builder=new AlertDialog.Builder(SearchResult.this); builder.setTitle("Sort List Item"); builder.setItems(new CharSequence[]{"By name", "By Father name","By EPIC","By House Number"}, new DialogInterface.OnClickListener() { @OverrIDe public voID onClick(DialogInterface dialogInterface, int i) { switch (i) { case 0: Toast.makeText(getApplicationContext(), "By name", Toast.LENGTH_SHORT).show(); sortJsonTechnique="1"; if (myData) { sortByname(sortdata,sortJsonTechnique); } break; case 1: Toast.makeText(getApplicationContext(), "By Father name", Toast.LENGTH_SHORT).show(); sortJsonTechnique="2"; if (myData) { sortByname(sortdata,sortJsonTechnique); } break; case 2: Toast.makeText(getApplicationContext(), "By EPIC", Toast.LENGTH_SHORT).show(); sortJsonTechnique="3"; if (myData) { sortByname(sortdata,sortJsonTechnique); } break; case 3: Toast.makeText(getApplicationContext(), "By House Number", Toast.LENGTH_SHORT).show(); sortJsonTechnique="4"; if (myData) { sortByname(sortdata,sortJsonTechnique); } break; default: break; } } }); builder.show(); }});在fab按钮选择后点击我排序Json数组.
这是解析Json数组的代码:
private voID sortByname(String mysortJson,String sortType) { List<JsONObject> JsonObjects=new ArrayList<JsONObject>(); try { JsONObject object=new JsONObject(mysortJson); JsONArray JsonArray=object.getJsONArray("Data"); for (int i=0;i<JsonArray.length();i++) { JsonObjects.add(JsonArray.getJsONObject(i)); } if (sortType.equals("1")) { Collections.sort(JsonObjects, new Comparator<JsONObject>() { @OverrIDe public int compare(JsONObject a, JsONObject b) { String val1=new String(); String val2=new String(); try { val1=(String) a.get("name");// Log.e("Value1",""+val1); val2=(String) b.get("name");// Log.e("Value2",""+val2); } catch (JsONException e) { e.printstacktrace(); } return val1.compareto(val2); } }); for (int j=0;j<JsonObjects.size();j++) { JsonArray.put(JsonObjects.get(j)); } Voter_ID=new String[JsonArray.length()]; boothname_ID=new String[JsonArray.length()]; Voter_name=new String[JsonArray.length()]; Voter_f_m_h_name=new String[JsonArray.length()]; Voter_epic=new String[JsonArray.length()]; Voter_h_no=new String[JsonArray.length()]; Voter_mobile=new String[JsonArray.length()]; Voter_gender=new String[JsonArray.length()]; Voter_age=new String[JsonArray.length()]; get_Voter_dob=new String[JsonArray.length()]; get_marriage_anniv=new String[JsonArray.length()]; get_Voter_caste_ID=new String[JsonArray.length()]; get_Voter_status_ID=new String[JsonArray.length()]; get_Voter_social_status_ID=new String[JsonArray.length()]; for (int c=0;c<JsonArray.length();c++) { JsONObject fetchVoter = JsonArray.getJsONObject(c); Voter_ID[c] = fetchVoter.getString(KEY_VoteR_ID); boothname_ID[c] = fetchVoter.getString(KEY_BOOTHname_ID); Voter_name[c] = fetchVoter.getString(KEY_SEARCH_name); Voter_f_m_h_name[c] = fetchVoter.getString(KEY_SEARCH_F_H_M_name); Voter_epic[c] = fetchVoter.getString(KEY_SEARCH_EPIC_name); Voter_h_no[c] = fetchVoter.getString(KEY_SEARCH_HOUSE_NUMBER); Voter_mobile[c]=fetchVoter.getString(KEY_SEARCH_MOBILE); Voter_gender[c]=fetchVoter.getString(KEY_SEARCH_GENDER); Voter_age[c]=fetchVoter.getString(KEY_SEARCH_AGE); get_Voter_dob[c]=fetchVoter.getString(KEY_SEARCH_dob); get_marriage_anniv[c]=fetchVoter.getString(KEY_MARRIEGE_ANNIV); get_Voter_caste_ID[c]=fetchVoter.getString(KEY_GET_CASTE_ID); get_Voter_status_ID[c]=fetchVoter.getString(KEY_GET_STATUS_ID); get_Voter_social_status_ID[c]=fetchVoter.getString(KEY_GET_SOCIAL_STATUS); } CustomSearchList adapter=new CustomSearchList(this,ParseJsonData.Voter_ID,ParseJsonData.boothname_ID,ParseJsonData.Voter_name,ParseJsonData.Voter_f_m_h_name,ParseJsonData.Voter_epic,ParseJsonData.Voter_h_no,ParseJsonData.Voter_mobile,ParseJsonData.Voter_age,ParseJsonData.Voter_gender,ParseJsonData.get_marriage_anniv,ParseJsonData.get_Voter_dob,ParseJsonData.get_Voter_caste_ID,ParseJsonData.get_Voter_status_ID,ParseJsonData.get_Voter_social_status_ID); searchList.setAdapter(adapter); adapter.notifyDataSetChanged(); } else if (sortType.equals("2")) { Collections.sort(JsonObjects, new Comparator<JsONObject>() { @OverrIDe public int compare(JsONObject a, JsONObject b) { String val1=new String(); String val2=new String(); try { val1=(String) a.get("Fname");// Log.e("Value1",""+val1); val2=(String) b.get("Fname");// Log.e("Value2",""+val2); } catch (JsONException e) { e.printstacktrace(); } return val1.compareto(val2); } }); for (int j=0;j<JsonObjects.size();j++) { JsonArray.put(JsonObjects.get(j)); } Voter_ID=new String[JsonArray.length()]; boothname_ID=new String[JsonArray.length()]; Voter_name=new String[JsonArray.length()]; Voter_f_m_h_name=new String[JsonArray.length()]; Voter_epic=new String[JsonArray.length()]; Voter_h_no=new String[JsonArray.length()]; Voter_mobile=new String[JsonArray.length()]; Voter_gender=new String[JsonArray.length()]; Voter_age=new String[JsonArray.length()]; get_Voter_dob=new String[JsonArray.length()]; get_marriage_anniv=new String[JsonArray.length()]; get_Voter_caste_ID=new String[JsonArray.length()]; get_Voter_status_ID=new String[JsonArray.length()]; get_Voter_social_status_ID=new String[JsonArray.length()]; for (int c=0;c<JsonArray.length();c++) { JsONObject fetchVoter = JsonArray.getJsONObject(c); Voter_ID[c] = fetchVoter.getString(KEY_VoteR_ID); boothname_ID[c] = fetchVoter.getString(KEY_BOOTHname_ID); Voter_name[c] = fetchVoter.getString(KEY_SEARCH_name); Voter_f_m_h_name[c] = fetchVoter.getString(KEY_SEARCH_F_H_M_name); Voter_epic[c] = fetchVoter.getString(KEY_SEARCH_EPIC_name); Voter_h_no[c] = fetchVoter.getString(KEY_SEARCH_HOUSE_NUMBER); Voter_mobile[c]=fetchVoter.getString(KEY_SEARCH_MOBILE); Voter_gender[c]=fetchVoter.getString(KEY_SEARCH_GENDER); Voter_age[c]=fetchVoter.getString(KEY_SEARCH_AGE); get_Voter_dob[c]=fetchVoter.getString(KEY_SEARCH_dob); get_marriage_anniv[c]=fetchVoter.getString(KEY_MARRIEGE_ANNIV); get_Voter_caste_ID[c]=fetchVoter.getString(KEY_GET_CASTE_ID); get_Voter_status_ID[c]=fetchVoter.getString(KEY_GET_STATUS_ID); get_Voter_social_status_ID[c]=fetchVoter.getString(KEY_GET_SOCIAL_STATUS); } CustomSearchList adapter=new CustomSearchList(this,ParseJsonData.Voter_ID,ParseJsonData.boothname_ID,ParseJsonData.Voter_name,ParseJsonData.Voter_f_m_h_name,ParseJsonData.Voter_epic,ParseJsonData.Voter_h_no,ParseJsonData.Voter_mobile,ParseJsonData.Voter_age,ParseJsonData.Voter_gender,ParseJsonData.get_marriage_anniv,ParseJsonData.get_Voter_dob,ParseJsonData.get_Voter_caste_ID,ParseJsonData.get_Voter_status_ID,ParseJsonData.get_Voter_social_status_ID); searchList.setAdapter(adapter); adapter.notifyDataSetChanged(); } else if (sortType.equals("3")) { Collections.sort(JsonObjects, new Comparator<JsONObject>() { @OverrIDe public int compare(JsONObject a, JsONObject b) { String val1=new String(); String val2=new String(); try { val1=(String) a.get("EPIC");// Log.e("Value1",""+val1); val2=(String) b.get("EPIC");// Log.e("Value2",""+val2); } catch (JsONException e) { e.printstacktrace(); } return val1.compareto(val2); } }); for (int j=0;j<JsonObjects.size();j++) { JsonArray.put(JsonObjects.get(j)); } Voter_ID=new String[JsonArray.length()]; boothname_ID=new String[JsonArray.length()]; Voter_name=new String[JsonArray.length()]; Voter_f_m_h_name=new String[JsonArray.length()]; Voter_epic=new String[JsonArray.length()]; Voter_h_no=new String[JsonArray.length()]; Voter_mobile=new String[JsonArray.length()]; Voter_gender=new String[JsonArray.length()]; Voter_age=new String[JsonArray.length()]; get_Voter_dob=new String[JsonArray.length()]; get_marriage_anniv=new String[JsonArray.length()]; get_Voter_caste_ID=new String[JsonArray.length()]; get_Voter_status_ID=new String[JsonArray.length()]; get_Voter_social_status_ID=new String[JsonArray.length()]; for (int c=0;c<JsonArray.length();c++) { JsONObject fetchVoter = JsonArray.getJsONObject(c); Voter_ID[c] = fetchVoter.getString(KEY_VoteR_ID); boothname_ID[c] = fetchVoter.getString(KEY_BOOTHname_ID); Voter_name[c] = fetchVoter.getString(KEY_SEARCH_name); Voter_f_m_h_name[c] = fetchVoter.getString(KEY_SEARCH_F_H_M_name); Voter_epic[c] = fetchVoter.getString(KEY_SEARCH_EPIC_name); Voter_h_no[c] = fetchVoter.getString(KEY_SEARCH_HOUSE_NUMBER); Voter_mobile[c]=fetchVoter.getString(KEY_SEARCH_MOBILE); Voter_gender[c]=fetchVoter.getString(KEY_SEARCH_GENDER); Voter_age[c]=fetchVoter.getString(KEY_SEARCH_AGE); get_Voter_dob[c]=fetchVoter.getString(KEY_SEARCH_dob); get_marriage_anniv[c]=fetchVoter.getString(KEY_MARRIEGE_ANNIV); get_Voter_caste_ID[c]=fetchVoter.getString(KEY_GET_CASTE_ID); get_Voter_status_ID[c]=fetchVoter.getString(KEY_GET_STATUS_ID); get_Voter_social_status_ID[c]=fetchVoter.getString(KEY_GET_SOCIAL_STATUS); } CustomSearchList adapter=new CustomSearchList(this,ParseJsonData.Voter_ID,ParseJsonData.boothname_ID,ParseJsonData.Voter_name,ParseJsonData.Voter_f_m_h_name,ParseJsonData.Voter_epic,ParseJsonData.Voter_h_no,ParseJsonData.Voter_mobile,ParseJsonData.Voter_age,ParseJsonData.Voter_gender,ParseJsonData.get_marriage_anniv,ParseJsonData.get_Voter_dob,ParseJsonData.get_Voter_caste_ID,ParseJsonData.get_Voter_status_ID,ParseJsonData.get_Voter_social_status_ID); searchList.setAdapter(adapter); adapter.notifyDataSetChanged(); } else if (sortType.equals(4)) { Collections.sort(JsonObjects, new Comparator<JsONObject>() { @OverrIDe public int compare(JsONObject a, JsONObject b) { String val1=new String(); String val2=new String(); try { val1=(String) a.get("HouseNo");// Log.e("Value1",""+val1); val2=(String) b.get("HouseNo");// Log.e("Value2",""+val2); } catch (JsONException e) { e.printstacktrace(); } return val1.compareto(val2); } }); for (int j=0;j<JsonObjects.size();j++) { JsonArray.put(JsonObjects.get(j)); } Voter_ID=new String[JsonArray.length()]; boothname_ID=new String[JsonArray.length()]; Voter_name=new String[JsonArray.length()]; Voter_f_m_h_name=new String[JsonArray.length()]; Voter_epic=new String[JsonArray.length()]; Voter_h_no=new String[JsonArray.length()]; Voter_mobile=new String[JsonArray.length()]; Voter_gender=new String[JsonArray.length()]; Voter_age=new String[JsonArray.length()]; get_Voter_dob=new String[JsonArray.length()]; get_marriage_anniv=new String[JsonArray.length()]; get_Voter_caste_ID=new String[JsonArray.length()]; get_Voter_status_ID=new String[JsonArray.length()]; get_Voter_social_status_ID=new String[JsonArray.length()]; for (int c=0;c<JsonArray.length();c++) { JsONObject fetchVoter = JsonArray.getJsONObject(c); Voter_ID[c] = fetchVoter.getString(KEY_VoteR_ID); boothname_ID[c] = fetchVoter.getString(KEY_BOOTHname_ID); Voter_name[c] = fetchVoter.getString(KEY_SEARCH_name); Voter_f_m_h_name[c] = fetchVoter.getString(KEY_SEARCH_F_H_M_name); Voter_epic[c] = fetchVoter.getString(KEY_SEARCH_EPIC_name); Voter_h_no[c] = fetchVoter.getString(KEY_SEARCH_HOUSE_NUMBER); Voter_mobile[c]=fetchVoter.getString(KEY_SEARCH_MOBILE); Voter_gender[c]=fetchVoter.getString(KEY_SEARCH_GENDER); Voter_age[c]=fetchVoter.getString(KEY_SEARCH_AGE); get_Voter_dob[c]=fetchVoter.getString(KEY_SEARCH_dob); get_marriage_anniv[c]=fetchVoter.getString(KEY_MARRIEGE_ANNIV); get_Voter_caste_ID[c]=fetchVoter.getString(KEY_GET_CASTE_ID); get_Voter_status_ID[c]=fetchVoter.getString(KEY_GET_STATUS_ID); get_Voter_social_status_ID[c]=fetchVoter.getString(KEY_GET_SOCIAL_STATUS); } CustomSearchList adapter=new CustomSearchList(this,ParseJsonData.Voter_ID,ParseJsonData.boothname_ID,ParseJsonData.Voter_name,ParseJsonData.Voter_f_m_h_name,ParseJsonData.Voter_epic,ParseJsonData.Voter_h_no,ParseJsonData.Voter_mobile,ParseJsonData.Voter_age,ParseJsonData.Voter_gender,ParseJsonData.get_marriage_anniv,ParseJsonData.get_Voter_dob,ParseJsonData.get_Voter_caste_ID,ParseJsonData.get_Voter_status_ID,ParseJsonData.get_Voter_social_status_ID); searchList.setAdapter(adapter); adapter.notifyDataSetChanged(); }// Log.e("Length Array",""+JsonArray.length());// Log.e("Length List",""+JsonObjects.size()); } catch (JsONException e) { e.printstacktrace(); } }我使用`adapter.notifyDataSetChanged();但我的自定义列表不会影响排序.
请建议我做什么.
解决方法:
在将数据设置为ListvIEw之前,您应该使用java中的比较器类对数据进行排序.
您创建一个Model类,其中包含您想要的所有变量(name,booth_ID等),并将每个对象存储到ArrayList中.
Collections.sort(ArrayListObject,new nameComparator()); 例
class nameComparator implements Comparator{ public int compare(Object o1,Object o2){ YourClassname s1=(YourClassname )o1; YourClassname s2=(YourClassname )o2; return s1.name.compareto(s2.name); } } 总结 以上是内存溢出为你收集整理的android – 排序JSONArray后,自定义列表视图没有改变?全部内容,希望文章能够帮你解决android – 排序JSONArray后,自定义列表视图没有改变?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)