代码之家  ›  专栏  ›  技术社区  ›  Yevgeny Simkin

如何在一堆需要控制邻居的Android按钮上运行循环?

  •  2
  • Yevgeny Simkin  · 技术社区  · 14 年前

    [ - ] [ 1111 ] [ + ]
    [ - ] [ 1112 ] [ + ]
    [ - ] [ 1113 ] [ + ]
    etc...
    

    我希望每个[-]改变它旁边字段的值,将其减少1,每个[+]增加它左边字段的值。

    setOnClickListener只接受View.OnClickListener作为参数,并且不能为其提供任何附加参数。为此,是否必须使用自己的自定义侦听器扩展View.OnClickListener?或者有什么明显的方法可以完成我忽略的任务?

    蒂亚。

    3 回复  |  直到 14 年前
        1
  •  1
  •   mrPjer    14 年前

    *请注意,这只是一个想法,我现在不能测试,因为不在电脑附近

    那么,这个怎么样:按钮扩展了视图类,这意味着它们有一个getParent方法,该方法将返回它们的父视图。所以,想想这样一个听众:

    public void onClick(View v){
    TextView count = (TextView) ((v.getParent()).findViewById(R.id.counter));
    switch(v.getId()){
    case: R.id.incrementButton:
    // increase value in count
    break;
    case R.id.decrementButton:
    // decrease value in count
    break;
    }
    }
    

    不需要额外的类或HKY ID管理,都在一个简单的灵活OnClickListener。

        2
  •  2
  •   Julian    14 年前

    onClick 事件 OnClickListener 只收一张 View 作为论据。然而 Button EditText 查看 类,因此可以使用此参数检查触发事件的按钮。下面的代码提供了一个简单的示例:

    OnClickListener listener = new OnClickListener()
    {
        public void onClick(View v)
        {
            if (v == bt1Decrement)
            {
                // Decrement field 1
            }
            else if (v == bt1Increment)
            {
                // Increment field 1
            }
            // else if... continue to check for the rest of the buttons
        }
    };
    

        3
  •  0
  •   Yevgeny Simkin    14 年前

    因此,用我自己的自定义侦听器扩展View.OnClickListener是最直接的方法。我动态生成一个文本字段以及+和-按钮,并将对该文本字段的引用传递给自定义侦听器。这有点老套,但我现在看不到更直截了当的方法。

    保留这个解决方案,因为它也工作,但像mrPjer的一个更好的(甚至认为它不是,确切地说,我所希望的)。