-1

我得到了 Json 的响应,需要以有序名称显示结果。实现 Hashmap 后,我意识到它没有按字母顺序排序我该怎么做?

public ArrayList<HashMap<String, String>> contactList= new ArrayList<HashMap<String, String>>();

Collections.sort(contactList, new Comparator<String>() {
        @Override
        public int compare(String s1, String s2) {
            return s1.compareToIgnoreCase(s2);
        }
    });

代码:

protected void onPostExecute(Void result) {
    super.onPostExecute(result);
    if (pDialog.isShowing())
        pDialog.dismiss();
    SimpleAdapter adapter = new SimpleAdapter(
            HomeActivity.this, contactList,
            R.layout.list_item, new String[] {TAG_FNAME}, new int[] {R.id.textView1});
    setListAdapter(adapter);
    adapter.notifyDataSetChanged();
    lv.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent,
                View view, int position, long ids) {
            Intent i = new Intent(getApplicationContext(),
                    SingleListActivity.class);
            HashMap<String, String> contact =  contactList.get(position);
            i.putExtra("id", id);
            i.putExtra("firstName", firstname);
            i.putExtra("lastName", lastname);
            i.putExtra("headline", headline);
            i.putExtra("pictureUrl", pictureUrl);
            i.putExtra("url", url);
            startActivity(i);
        }
    });

在这个它包含名字和姓氏我该怎么做?

4

2 回答 2

0

要对 HashMap 的 ArrayList 进行排序,请使用此代码。

Collections.sort(ArrayList,new Comparator<HashMap<String,String>>(){
public int compare(HashMap<String,String> mapping1,HashMap<String,String> mapping2){
    return mapping1.get("Name").compareTo(mapping2.get("Name"));

}

在大多数情况下,HashMap 具有相同的键,因此您可以使用此代码。(将“名称”更改为您的键)。将 ArrayList 替换为您的 Arraylist 名称,在您的情况下为 contactList。

希望这可以帮助 :)

于 2014-08-07T05:26:06.643 回答
-1

如果您检查“如何对每个包含多个键值对的 HashMaps 的 ArrayList 进行排序”,那么它已经讨论过了,请查看stackoverflow.com/questions/5369573

如果您正在检查“android-listview-display-as-alphabetic-order”,请查看此 stackoverflow 讨论stackoverflow.com/questions/12559843

于 2014-08-07T05:42:46.580 回答