2

我正在使用此代码按字母顺序对列表视图进行排序,但它没有对它进行排序,它对它进行排序 za 问题在哪里?

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

3 回答 3

4

去掉和'-'之间。这将为您解决问题..returnarg1.compareTo(arg0);

以下将按 za(降序)顺序排序。

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

对于,az(升序):

adapter.sort(new Comparator<String>() {
        @Override 
        public int compare(String arg1, String arg0) {
            return arg1.compareTo(arg0);
        }
    });
于 2013-10-31T11:17:45.830 回答
2

使用Collections.sort(yourArrayList)然后将 yourArrayList 重新加载到适配器中。

这是一些代码支持我的回答

你的适配器.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
于 2013-10-31T11:18:33.893 回答
1

return也许和之间的字符'-' arg1.compareTo(arg0);

于 2013-10-31T11:16:53.760 回答