如何使用ActionBarSherlock在actionBar选项卡中切换升序/降序排序

时间:2013-06-09 18:48:00

标签: android sorting actionbarsherlock

我在我的应用程序中使用ActionBarSherlock作为我的选项卡。我有一些项目以列表的形式显示(使用ArrayList)。

目前,我正在尝试模拟一种情况,我可以通过点击actionBar在升序和降序排序之间切换。有没有人尝试过这种情况? 如果是的话,有人可以帮我吗?

1 个答案:

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