【问题标题】:Getting the array position of a array button during onClick在onClick期间获取数组按钮的数组位置
【发布时间】:2014-03-19 08:26:33
【问题描述】:

我有一个大小可能超过 20-30 的按钮数组。我的简单问题是如何获取已单击按钮的数组索引?例如,我点击了 btnDisplay[8],然后应用程序将敬酒“8”。就如此容易。但我不知道如何检索排列按钮的索引。

switch (clickedButton.getId())
{
  case R.id.Button01:
      // do something
      break;

  case R.id.Button01:
      // do something
      break;
}

如果我使用这个代码,那么我必须写 20-30 个案例。会有更好的解决方案吗?

我如何生成按钮数组

public class MainActivity extends Activity {
Button[] btnUpdate;

public void onCreate(Bundle savedInstanceState) {

//SOME CODE HERE

jsonParser = new JSONParser();
jObj = jsonParser.getJSONFromUrl(URL);

btnUpdate = new Button[jObj.length()];

for(int i=0;i<jObj.length();i++)
{
btnUpdate[i] = new Button(getApplicationContext());
btnUpdate[i].setText("Edit");
btnUpdate[i].setHeight(50);
}

【问题讨论】:

  • 使用 setTag() getTag() 方法。发布您如何创建按钮并添加到数组
  • 你能发布你的按钮创建代码吗?
  • @BirajZalavadia 我已经编辑了我的问题。请看一下

标签: android eclipse button


【解决方案1】:

试试这个方法

for (int i = 0; i < jObj.length(); i++) {
            btnUpdate[i] = new Button(getApplicationContext());
            btnUpdate[i].setText("Edit");
            btnUpdate[i].setHeight(50);
            btnUpdate[i].setTag(i); //ADD THIS LINE.
        }


void onClick(View v) {

        int index = (Integer) v.getTag();
        Toast.makeText(getApplicationContext(), "BtnClicked"+index, Toast.LENGTH_SHORT).show();

    }

【讨论】:

    【解决方案2】:

    以某种方式尝试使用 btnDisplay.indexof(); 它在 C# 中工作我不确定 Java

    【讨论】:

      【解决方案3】:

      试试这样的

      void onClick(View v)
      {
         int index = 0;
         for (int i = 0; i < buttonArray.length; i++)
         {
            if (buttonArray[i].getId() == v.getId())
            {
               index = i;
        Toast.makeText(getApplicationContext(), "BtnClicked"+index, Toast.LENGTH_SHORT).show();
               break;
            }
         }
      
      
      }
      

      【讨论】:

      • 不起作用,但我忘了提到按钮数组是以编程方式生成的。如果我使用这个代码,无论我点击什么按钮,索引仍然是 0。你能告诉我如何解决这个问题吗?您的建议可能是一个可能的解决方案
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-02
      • 2020-09-01
      • 2011-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多