android– 排序JSONArray后,自定义列表视图没有改变?

android– 排序JSONArray后,自定义列表视图没有改变?,第1张

概述我正在排序JSONArray并在自定义列表视图中显示它们,但排序后数据在自定义列表视图中没有更改.这是我的fab按钮代码,用于选择要执行的排序:fab.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewview){AlertDialog.Builde

我正在排序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后,自定义列表视图没有改变?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1101681.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存