【问题标题】:Click listener for multiple buttons ive created dynamically Android Studio我动态创建的多个按钮的单击侦听器 Android Studio
【发布时间】:2020-07-30 02:36:27
【问题描述】:

好的,所以我正在制作一个 android 应用程序,并且我有一个目标列表,可以说是为了便于解释。一个目标由一个字符串组成。该数据将来自数据库,因此将来列表的长度可能会稍长或稍短。每个目标都放置在按钮的文本中。

我已经创建了这个循环来在运行时创建按钮,因为列表的长度取决于之前发生的事情,这一切都很好,我可以创建按钮并将它们放置在我想要的位置等。这是我曾经这样做的代码。

    for (int i = 0; i < goals.size(); i++){
        buttons[i] = new Button(this.getContext());
        buttons[i].setLayoutParams(params);
        buttons[i].setPadding(0,150,0,150);
        buttons[i].setGravity(Gravity.CENTER);
        buttons[i].setText(goals.get(i));
        buttons[i].setBackgroundResource(R.drawable.btn_back);
        buttons[i].setTextSize(30);
        buttons[i].setTransformationMethod(null);
        linear.addView(buttons[i]);
    }

现在我的问题是我希望每个按钮的点击做一个稍微不同的事情 - 取决于目标,即按钮的文本。我真的在努力设置点击事件,以便即使我已经动态地创建了所有按钮,不同的按钮也会做不同的事情。

我可以详细介绍我在 android studio 中的设置,但我觉得我已经对我的问题提供了足够的洞察力。

感谢您的帮助。

【问题讨论】:

  • 为什么不使用 ListView 或 RecyclerView ?
  • 我对上面的评论感到失望,您可能会考虑使用优化并保存所有按钮列表的东西,您可以创建一个“点击”侦听器,通过适配器指定行为每个项目。

标签: java android events button click


【解决方案1】:

我最好的猜测是,如果您已经根据文本知道每个按钮的功能应该是什么,您不能只获取按钮的文本,然后在 switch(或其他东西)中使用它来获得具体像这样的功能:

buttons[i].setOnClickListener(new View.OnClickListener(){

   @Override
   public void onClick(View view){

       //Put whatever is common between buttons outside of the switch

       switch(((Button)view).getText().toString()){

       //And then just assign a case for whatever functionality you need specifically for each goal

       }

   }


});

【讨论】:

    猜你喜欢
    • 2011-12-02
    • 2015-07-31
    • 2013-03-14
    • 2020-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-21
    • 2011-08-21
    相关资源
    最近更新 更多