如何通过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 进行排序?