带有比较器的Android排序列表视图

时间:2015-12-13 15:10:27

标签: java android listview comparator

我在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;
    }

}

目前我不知道什么是错的,你看到我的错误吗?

祝你好运

的Stefan

1 个答案:

答案 0 :(得分:2)

根据代码,您发布的所有内容都是正确的。 ArrayAdapter.sort()对您提供的数据集进行排序。如果未调用compare,或者因为您的数据集为空或者您没有将其提供给超级构造函数,例如

public class CustomAdapter extends ArrayAdapter<ListModel> implements
    OnClickListener {

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