我正在使用这段代码对我的列表视图进行字母顺序排序,但它并没有按照a-z的顺序进行排序,而是按照z-a的顺序进行排序。问题出在哪里?
adapter.sort(new Comparator<String>() {
@Override
public int compare(String arg1, String arg0) {
return -arg1.compareTo(arg0);
}
});
请将 '-'
从 return
和 arg1.compareTo(arg0);
之间移除。这样就可以为您解决问题。
以下代码将以 z-a(降序)排序。
adapter.sort(new Comparator<String>() {
@Override
public int compare(String arg1, String arg0) {
return arg0.compareTo(arg1);
}
});
对于a-z(升序):
adapter.sort(new Comparator<String>() {
@Override
public int compare(String arg1, String arg0) {
return arg1.compareTo(arg0);
}
});
使用 Collections.sort(yourArrayList)
,然后重新将你的 ArrayList 加载到适配器中。
这里有一些支持我的答案的代码:
YourAdapter.java
public class YourAdapter extends BaseAdapter
{
protected ArrayList<String> data;
public void addSomeData()
{
data.add("oranj");
data.add("apple");
data.add("pineapple");
}
public YourAdapter sortData()
{
Collections.sort(data);
return this;
}
public int getCount()
{
return data.size();
}
public String getItem(int position)
{
return data.get(position);
}
public long getItemId(int position)
{
return position;
}
}
list.setAdapter(new YourAdapter(this)); // not sorted list
list.setAdapter(new YourAdapter(this).sortData()); // sorted list
return
和arg1.compareTo(arg0);
之间的连字符“-”导致的问题?