2012-07-19 59 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) { 

这会做你的任务