在Android中对ListView进行排序

3

我正在使用这段代码对我的列表视图进行字母顺序排序,但它并没有按照a-z的顺序进行排序,而是按照z-a的顺序进行排序。问题出在哪里?

adapter.sort(new Comparator<String>() {
    @Override 
    public int compare(String arg1, String arg0) {
        return -arg1.compareTo(arg0);
    }
});
3个回答

5

请将 '-'returnarg1.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);
        }
    });

2

使用 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

能否请您稍微解释一下您的答案?谢谢! - Mohsen fallahi

1
也许是returnarg1.compareTo(arg0);之间的连字符“-”导致的问题?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接