【问题标题】:OnClicklistener not working for runtime viewsOnClicklistener 不适用于运行时视图
【发布时间】:2011-04-07 07:17:25
【问题描述】:

我正在我的应用程序中显示一个在运行时创建的表。我想让它的所有行都可以点击。这里我使用了代码。

            tableRow.addView(payeeNameText);
            tableRow.addView(dueDateButton);
            tableRow.setTag(1);
            accountBillsTL.addView(tableRow);

            public void onClick(View v) {
            // TODO Auto-generated method stub
            if(v == (View)tableRow.getTag(1)){
               System.out.println("Row Clicked");
            }
            }

但是当点击该行时没有任何反应。 LogCat 没有打印价值。请帮忙。如何使用运行时视图使行可单击。谢谢。

【问题讨论】:

    标签: android views onclick tablelayout tablerow


    【解决方案1】:

    使您的表格行可点击并附加一个 onClick 侦听器

    tableRow.setClickable(true)
    tableRow.setOnClickListener(new View.OnClickListener(){
     public void onClick(View view){
       System.out.println("Row Clicked with tag " + view.getTag()); 
     }
    })
    

    注意:view.getTag() 没有任何参数!这只返回一个对象。您添加了一个整数作为此视图的标记,因此您可以执行类似的操作

    if (((int) tableRow.getTag()) == 1) {
     bla bla
    }
    

    【讨论】:

      【解决方案2】:

      您可能还没有为您创建的“运行时视图”添加侦听器。

      yourView.setOnClickListener(this);  
      

      【讨论】:

      • 我添加了 tableRow.setOnClickListener(this);
      • 您确实应该添加更多代码。无法从可用的东西中做出任何事情。
      • 你也可以试试 if(v.getId() == (View)tableRow..findViewWithTag("1").getId()){ System.out.println("Row Clicked") ; }
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多