0

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

目前,我正在尝试模拟一个场景,其中我应该能够通过单击操作栏在升序和降序排序之间切换。有没有人尝试过这种情况?如果是的话,有人可以帮我吗?

4

1 回答 1

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();
    }
}
于 2013-06-20T13:23:13.707 回答