我在我的应用程序中为我的选项卡使用 ActionBarSherlock。我有一些项目要在选项卡中以列表的形式(使用 ArrayList)显示。
目前,我正在尝试模拟一个场景,其中我应该能够通过单击操作栏在升序和降序排序之间切换。有没有人尝试过这种情况?如果是的话,有人可以帮我吗?
我在我的应用程序中为我的选项卡使用 ActionBarSherlock。我有一些项目要在选项卡中以列表的形式(使用 ArrayList)显示。
目前,我正在尝试模拟一个场景,其中我应该能够通过单击操作栏在升序和降序排序之间切换。有没有人尝试过这种情况?如果是的话,有人可以帮我吗?
经过大量的思考和分析,我可以通过以下方式实现这一点。
在主活动文件中,您可以添加以下代码
boolean flag = false;
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
Fragment f = mFragmentList.get(tab.getPosition());
if(f instanceof Frag_One){
((Frag_All) f).toggleSortOrder(flag);
}else if(f instanceof Frag_Due){
((Frag_Two) f).toggleSortOrder(flag);
}
flag = !flag;
}
为此,您需要在 Frag_One 和/或 Frag_Two 中添加以下代码
@Override
public void toggleSortOrder(boolean flag) {
// TODO Auto-generated method stub
super.toggleSortOrder(flag);
if(flag) {
Collections.sort(list, new Comparator<CompanyInfo>() {
@Override
public int compare(CompanyInfolhs, CompanyInforhs) {
// TODO Auto-generated method stub
return lhs.getName().compareToIgnoreCase(rhs.getName());
}
});
mListAdapter.notifyDataSetChanged();
}else {
Collections.sort(list, new Comparator<CompanyInfo>() {
@Override
public int compare(CompanyInfolhs, CompanyInforhs) {
// TODO Auto-generated method stub
return rhs.getName().compareToIgnoreCase(lhs.getName());
}
});
mListAdapter.notifyDataSetChanged();
}
}