Reputation: 917
i am using this code to sort my list view in alphabetic order but it doesn't sort it a-z it sorts it z-a where is The problem?
adapter.sort(new Comparator<String>() {
@Override
public int compare(String arg1, String arg0) {
return -arg1.compareTo(arg0);
}
});
Upvotes: 3
Views: 12906
Reputation: 5971
Use Collections.sort(yourArrayList)
and then reload yourArrayList into the adapter.
here is some code supports my answer
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;
}
}
and in your activity
list.setAdapter(new YourAdapter(this)); // not sorted list
list.setAdapter(new YourAdapter(this).sortData()); // sorted list
Upvotes: 2
Reputation: 24853
Remove the '-'
between return
and arg1.compareTo(arg0);
. That will do the trick for you..
The following will sort in z-a(descending) order.
adapter.sort(new Comparator<String>() {
@Override
public int compare(String arg1, String arg0) {
return arg0.compareTo(arg1);
}
});
For, a-z(ascending) :
adapter.sort(new Comparator<String>() {
@Override
public int compare(String arg1, String arg0) {
return arg1.compareTo(arg0);
}
});
Upvotes: 5
Reputation: 3373
Maybe the character '-' between return
and arg1.compareTo(arg0);
?
Upvotes: 1