繁体   English   中英

使用按钮的onClickListener更改textview上的文本

[英]changing text on textview with button's onClickListener

嗨,我正在android studio“ FlashCards”中的第一个更大的应用程序上工作。 我希望它能正常工作,因此,在您单击按钮后,抽认卡的textview会将其文本更改为下一个随机抽认卡,直到您看到所有这些卡我该如何从onClick方法内部“继续”执行循环操作。

这是循环的代码:

    while(i < mTestDeck.size()) {

        // generates random number which will represent position in deck.

        int random = randomGenerator.nextInt() % mTestDeck.size();

        // if random flashcard was already shown create random number again

        if (mTestDeck.get(random).wasShown())
            continue;

        //text view that we will operate on

        TextView deckTextView = (TextView) findViewById(R.id.flashcard_text_view);

        // set text
        deckTextView.setText(mTestDeck.get(random).getFront());

        // set mWasShown to true

        mTestDeck.get(random).flashcardShown();

        Button myButton = (Button) findViewById(R.id.know_answer);

        myButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mTestDeck.correctAnswer();
            }
        });

        myButton = (Button) findViewById(R.id.dont_know_answer);

        myButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

            }
        });
    }

}

首先,这样,您就有了潜在的无限循环。 如果它能够发生,那将会发生! “获取随机项目并检查是否正常或重试”不是一个好主意。

我认为最好以随机顺序列出所有项目。 您只需要对其进行迭代。

就像是:

int currentPosition = 0;
List<Card> items = new ArrayList<Card>(mTestDeck).shuffle();

// Call this method once in onCreate or anywhere you initialize the UI
private void function setCurrentCard() {
    Card currentItem = items.get(currentPosition);

    [...] // Set all UI views here

    myButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (currentPosition > items.size) {
                // TODO? End?
                return;
            }

            currentPosition++;
            setCurrentCard();
        }
    });
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM