Textview在android中多次点击

时间:2012-07-19 08:30:29

标签: android textview

在我的应用程序中我有一个TextView,当用户第一次点击它时,我必须按降序排列数据,当用户再次点击同一文本视图时,我必须按升序排列数据有没有办法实现这个目标?

我的代码:

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

5 个答案:

答案 0 :(得分: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 :(得分: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";
        }
    }
});

答案 2 :(得分: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
         }                
    }
});

答案 3 :(得分:1)

只需放置

boolean flag = false;

在函数调用

之上
public void onClick(View v) {

这将完成你的任务

答案 4 :(得分:0)

boolean sortAscend = false

在TextView的onclicklistener()检查sortAscend并对其进行排序并设置sortAscend = !sortAscend

这样它会继续在asc / desc中对它进行排序