如何通过android中的数值列对listview项进行排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过android中的数值列对listview项进行排序相关的知识,希望对你有一定的参考价值。

我有一个带有以下项目的列表视图lv:

Hyda, 25.00
Bran, 11.75
Geda, 2.55

我想按第二列对项目进行排序,以便Listview显示:

Geda, 2.55
Bran, 11.75
Hyda, 25.00

我下面使用的代码仅按第一列排序;即它返回:

Bran, 11.75
Geda, 2.55
Hyda, 25.00

ArrayList<String> list = new ArrayList<>();
        ArrayAdapter<String> adapter;

        lv = rootView.findViewById(R.id.lvData);
        adapter = new ArrayAdapter<String>(getContext(),android.R.layout.simple_list_item_1, list);

        list.add("Hyda"+", "+"25.00");
        list.add("Bran"+", "+"11.75");
        list.add("Geda"+", "+"2.55");


        lv.setAdapter(adapter);


        btnSort = rootView.findViewById(R.id.sortButton);
        btnSort.setOnClickListener(new View.OnClickListener() 
            @Override
            public void onClick(View v) 

                Collections.sort(list,new myComparatorNumbers());
                for (String i:list)
                   lv.setAdapter(adapter);
                                
            
        );

        private class myComparatorNumbers implements Comparator<String> 

        @Override
        public int compare(String o1, String o2) 
            return o1.compareTo(o2);
        

任何人都可以提供有关如何按第二列(即按数值)进行排序的帮助吗?我发现的大多数解决方案都集中在一个列数据数组上]

答案

首先,我建议您创建一个自定义类,>]

class Person 
   String name;
   int score;

然后您需要将代码更改为:

    btnSort.setOnClickListener(new View.OnClickListener() 
            @Override
            public void onClick(View v) 
                Collections.sort(list,new Comparator<Person>()
                   @Override
                   public int compare(Person p1, Person p2) 
                      return p1.score - p2.score;
                   
                ;
                lv.setAdapter(new ArrayAdapter<String(getContext(),android.R.layout.simple_list_item_1, list));            
            
        );

还需要对列表进行排序后创建新的适配器;

以上是关于如何通过android中的数值列对listview项进行排序的主要内容,如果未能解决你的问题,请参考以下文章

如何修复动态适配器包装器 Android 中的 notifyDataSetChanged/ListView 问题

android中如何获得listview中的checkbox的值?

如何通过单击列的标题按列对 QTableWidget 进行排序?

如何使用新列对 Spark dataFrame 中的字符串字段进行 JSON 转义

如何仅从 R 中的特定列对中提取显着相关性?

Android Sqlite:如何从 Listview 中获取 SQLite rowId?