【问题标题】:Textview multiple clicks in androidandroid中的Textview多次点击
【发布时间】:2013-04-06 00:50:39
【问题描述】:

在我的应用程序中,我有一个 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();             
}

【问题讨论】:

  • 检查一下我认为这个答案适合你的问题stackoverflow.com/questions/7837601/…
  • 数据你的意思是TextView的文本???
  • 哦,为什么要在 onClick 中创建布尔标志,它将继续创建,只创建一次..

标签: android textview


【解决方案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
         }                
    }
});

【讨论】:

  • 我检查了您的代码,您在 onClick 中创建布尔标志是一个很大的错误。您应该创建一次并且需要在 onClick 中进行跟踪...您还在寻找什么?
【解决方案2】:

只需放置

boolean flag = false;

在函数调用之上

public void onClick(View v) {

这将完成你的任务

【讨论】:

    【解决方案3】:

    您可以使用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");
            } 
        }
    });
    

    【讨论】:

      【解决方案4】:

      你有按升序和降序排列它们的逻辑吗?

      如果是,

      假设函数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";
              }
          }
      });
      

      【讨论】:

        【解决方案5】:

        boolean sortAscend = false

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

        这样它会在 asc/desc 中交替排序

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-06-04
          • 2015-04-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-11-09
          • 1970-01-01
          相关资源
          最近更新 更多