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

问题描述 投票:0回答:1

我有一个带有以下项目的列表视图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);
        }

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

android sorting android-listview
1个回答
0
投票

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

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));            
            }
        });

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

© www.soinside.com 2019 - 2024. All rights reserved.