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);
}
我的 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);
}