2011-09-20 102 views
0

我想按单击按钮进行排序和反向排序,但是我只能做到一个,我如何在连续按钮单击中实现此排序和反向排序。Android如何在单个按钮中进行排序和反向排序clcik

btn.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      Comparator<Book> bb=Collections.reverseOrder(); 
       bk=Arrays.asList(books); 
       Collections.sort(bk,bb); 
       //Collections.shuffle(bk); 
      // Collections.sort(bk); 
       bookListView.invalidateViews(); 

     } 
    }); 
+0

您对bk进行了排序,但您在哪里实际设置了bookListView以显示bk? – brianestey

回答

0

使用初始值为true的Boolean字段。在按钮的点击处理程序中,比较布尔字段值,如果它是true,则对false进行排序并将其设置为布尔字段。如果布尔值为false,则反转并将true设置为布尔值字段。

boolean state=true; 

btn.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
    if(state) { 
     //sort 
     state=false; 
    } 
    else{ 
     //reverse 
     state=true; 
    } 
    } 
}); 
+0

谢谢AVD,布尔逻辑工作。 – jalakam

+0

只有当第一个列头数据相对于第一列数据进行排序的第二个列标题列,而不是第二列数据时,我才能做这个问题。 – jalakam

+0

@jalakam:与“状态”字段一起,您还可以声明另一个包含标题信息的字段。如果标题为1st,则分配值1,如果选择了第二个标题,则分配值2,依此类推。 – adatapost

1

你所有的代码都是按逆向顺序对列表进行排序。

Collections.reverseOrder()返回一个反转比较器。

然后您将bb比较器传递给Collections.sort方法,该方法会颠倒集合。

从java doc中,根据指定的比较器引发的顺序对指定的列表进行排序。

您应该在对其进行反转后对其进行排序。

+0

雅,但我排序并在相同的Button事件中连续点击排序,所以我想要一些条件。 – jalakam