我在我的应用程序中使用ActionBarSherlock作为我的选项卡。我有一些项目以列表的形式显示(使用ArrayList)。
目前,我正在尝试模拟一种情况,我可以通过点击actionBar在升序和降序排序之间切换。有没有人尝试过这种情况? 如果是的话,有人可以帮我吗?
答案 0 :(得分:1)
经过大量的思考和分析,我可以通过以下方式实现这一目标。
在主活动文件中,您可以添加以下代码
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();
}
}