2012-07-19 62 views
0

在我的應用程序中,我有一個TextView,當用戶第一次點擊它時,我必須按降序排列數據,當用戶再次點擊相同的文本視圖時,我必須安排數據按升序排列。有沒有辦法做到這一點?Textview在android中的多次點擊

我的代碼:

public void onClick(View v) { 
    // TODO Auto-generated method stub 
    boolean flag = false; 
    db.open(); 
    Cursor c; 
    if(flag==false) 
    { 
     c = db.getIncomeTitleDescitem(intent.getStringExtra("grpsdb")); 
     startManagingCursor(c); 
     flag=true; 
    }     
    else 
    { 
     System.out.println("inside else"); 
     c = db.getIncomeTitleAscitem(intent.getStringExtra("grpsdb")); 
     startManagingCursor(c); 
     flag=false; 
    } 
    ListView lv=(ListView)findViewById(R.id.listView1);  
    String[] fromdes = new String[] {db.KEY_DATE,db.KEY_DESC,db.KEY_INCOME,db.KEY_TOTAL}; 
    int[] todes = new int[] {R.id.text1 ,R.id.text3,R.id.text5,R.id.text7}; 
    SimpleCursorAdapter notes = new SimpleCursorAdapter(IncomeDetails.this, R.layout.columnview, c, fromdes, todes);       
    lv.setAdapter(notes); 
    db.close();    
} 
+0

檢查上面這個我想這個答案是西裝爲您的問題 http://stackoverflow.com/questions/7837601/how-to-implement-doubleclick-on-android-edittext – 2012-07-19 08:36:10

+0

由你的意思是TextView的文本? – 2012-07-19 08:36:28

+0

ohhh爲什麼你要在onClick裏面創建布爾標誌,它會一直創建,只能創建一次.. – 2012-07-19 10:22:11

回答

1

是的,你可以很容易地跟蹤一個標誌,基於點擊更新標誌..國旗你可以保持布爾值或int任何你想要的。供大家參考......

boolean flag = false; // false - first click, true - second click 
textView.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     if (flag == false) { 
      flag = true; 
      // do descending 
     } else { 
      flag = false; 
      // do ascending 
     }     
    } 
}); 
+0

沒有Arfin..No我沒有得到..看到我編輯的代碼.. – 2012-07-19 08:54:31

+0

我檢查了你的代碼,你在做在onClick中創建布爾標誌是一個很大的錯誤。你應該創造一個時間,需要在onClick內進行跟蹤......你還在尋找什麼? – 2012-07-19 10:24:17

0

布爾sortAscend =假

在你的TextView的onclicklistener()檢查sortAscend和排序,並設置sortAscend = !sortAscend

這樣它會繼續在遞增/遞減排序它交替

1

您可以使用setTag()getTag()保持狀態。

默認情況下,將TextView設置爲tv.setTag("descending");,然後在onClick()內使用getTag()並執行您的工作。

樣品,

tv.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View paramView) { 
     String order = (String) paramView.getTag(); 
     if(order.equalsIgnoreCase("descending")){ 
      // perform descending ordering 
      tv.setTag("ascending"); 
     } 
     else if (order.equalsIgnoreCase("ascending")) { 
      // perform ascending ordering 
      tv.setTag("descending"); 
     } 
    } 
}); 
1

你有升序排列它們和降序的邏輯?

如果是的話,

假設功能arrangeA()arrangeD()做整理工作,按照升序和降序進行排序。

String lastSet="none"; 
TextView tv= (TextView) findViewById(R.id.tv); 
tv.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     if(lastSet.equals("none")||lastSet.equals("asc")) { 
      arrangeD(); 
      lastSet="desc"; 
     } 
     else { 
      arrngeA(); 
      lastSet="asc"; 
     } 
    } 
}); 
1

只需將

boolean flag = false; 

函數調用

public void onClick(View v) { 

這會做你的任務