java - 如何获取字符串数组中的下一个按钮

标签 java arrays string button

在一个类中,我得到了一个包含事实的字符串,数组中是这样的:

public class FactBook {
    public String[] mFacts = {"a", "b", "c"};
    ....

现在我得到了一个这样的随机生成器:

public String getFact() {
    String fact = "";

    Random randomGenerator = new Random();  

    int randomNumber = randomGenerator.nextInt(mFacts.length);

    fact = mFacts[randomNumber];

    return fact;
}

我在activity类中的randomButton是这样的:

final TextView factLabel = (TextView) findViewById(R.id.factTextView);
final Button showFactButton = (Button) findViewById(R.id.showFactButton);
final RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.relativeLayout);
final MediaPlayer mMediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.button);

View.OnClickListener listener = new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        mMediaPlayer.start();

        String fact = mFactBook.getFact();
        //Update the Label with our dynamic fact
        factLabel.setText(fact);

        int color = mColorWheel.getColor();
        relativeLayout.setBackgroundColor(color);
        showFactButton.setTextColor(color);
    }
};
showFactButton.setOnClickListener(listener);

现在我想创建一个逐步遍历数组的按钮(如 nextButtonpreviousButton)。但我卡住了。有人有什么想法吗?

最佳答案

创建接受字符串数组并对其进行操作的类,实现非常基础,视为 poc ;)

public class Facts
{
   private String[] mFacts;
   private int current = 0;
   public Facts( String[] mFacts )
   {
       this.mFacts = mFacts;
   }

   public boolean hasPrevious()
   {
      return current >= 0;
   }

   public boolean hasNext()
   {
       return current < mFacts.length;
   }

   public String next()
   {
       if( !hasNext() )
       {
            return null;
       }
       String v = mFacts[ current ];
       current++;
       return v;
   }

   public String previous()
   {
       if( !hasPrevious() )
       {
            return null;
       }
       String v = mFacts[ current ];
       current--;
       return v;
   }

   public String random()
   {
        Random randomGenerator = new Random(); 
        int randomNumber = randomGenerator.nextInt(mFacts.length);
        return mFacts[randomNumber];
   }
}

更新 代码中的某处 Facts facts = new Facts( String[] array );虽然我不熟悉 android,但我在你的源代码中看到按钮是在另一个地方创建的(可能通过一些 gui 工具)。每次单击按钮时,它将遍历数组直到到达末尾。要动态创建按钮(从文档中读取),您可以使用它。

public class ButtonCreator
{
    private Facts facts;
    public ButtonCreator( Facts facts )
    {
        this.facts = facts;
    }

    public boolean canCreateNextButton() { return facts.hasNext(); }
    public boolean canCreatePreviousButton() { return facts.hasPrevious(); }
    public Button createNextButton( Context context )
    {
        Button button = new Button( context );
        button.setText( facts.next() );
        return button;
    }
    public Button createPreviousButton( Context context )
    {
        Button button = new Button( context );
        button.setText( facts.previous() );
        return button;
    }
}

然后在创建后像粘贴代码一样设置适当的监听器

然后在表单初始化期间

String[] arr = {"AAA","BBBB","CCC"};
Facts f = new Facts( array );
ButtonCreator creator = new ButtonCreator( f );

while( creator.canCreateNextButton() )
{
    Button button = creator.nextButton( //view context here// );
    button.setListener( //listener here// );    
}

关于java - 如何获取字符串数组中的下一个按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31234687/

相关文章:

java - 如何在Java中制作数组数组

c++ - 提取小数点后的值

c# - 如何在 String.Split() 方法中使用字符串作为分隔符?

java - 在 Tomcat 9 上托管 Spring Boot 出现 404 错误

java - 在Android(Java)中将opencv矩阵转换为字符串以存储在数据库中的最佳方法

php - 引用 - 这个错误在 PHP 中意味着什么?

java - 在 Java 中构造时设置数组值

java - CollapsingToolbar - 与正确的锚定重叠

java - 生成无溢出的安全随机 double

python - Pandas - 检查数据帧列是否包含键 :value pairs from a dictionary