Android 使用比较器排序列表视图不起作用

Android sort listview with Comparator not working

我的 onCreate 方法中有这段代码来创建自定义 listview:

adapter = new CustomAdapter(CustomListView, mAllListModel, res);
mFtpDao.open();
final Tupel<String, Boolean> lSort = mFtpDao.loadSort(mCurrentPath);
mFtpDao.close();
adapter.sort(new FtpContentComparator(lSort));

list.setAdapter(adapter);
adapter.notifyDataSetChanged();

一切正常。列表视图和数据按预期显示。 但是我的 Comparator 有问题。 我的元素未排序,并且从未调用 compare 方法。

public class CustomAdapter extends ArrayAdapter<ListModel> implements
        OnClickListener {

比较器:

package de.bc.coreftp.comparator;

import java.util.Comparator;

import de.bc.coreftp.list.ListModel;
import de.beike.consulting.core.ftp.business.Tupel;

public class FtpContentComparator implements Comparator<ListModel> {

    private Tupel<String, Boolean> mSortCriteria;

    public FtpContentComparator(Tupel<String, Boolean> pSortCriteria) {
        mSortCriteria = pSortCriteria;
    }

    @Override
    public int compare(ListModel arg0, ListModel arg1) {
        String lSortAfter = " Name ";
        if (null != mSortCriteria){
            lSortAfter = mSortCriteria.get1st();
        }

        if (" Name ".equals(lSortAfter)){
            return arg0.getFtpContent().getName().compareTo(arg1.getFtpContent().getName());
        }
        return 0;
    }

}

目前我不知道哪里出了问题,你看到我的错误了吗?

此致

斯蒂芬

根据您发布的代码,一切看起来都是正确的。 ArrayAdapter.sort() 对您提供的数据集进行排序。如果未调用比较,要么是因为您的数据集为空,要么是您没有将其提供给超级构造函数,例如

public class CustomAdapter extends ArrayAdapter<ListModel> implements
    OnClickListener {

   public CustomAdapter(Context context, List<ListModel> dataset) {
       super(context, R.id.list, dataset);
   }