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