如何访问和使用以编程方式创建的资源ID?

时间:2016-09-09 19:40:24

标签: java android

我是Android的新手,我正在尝试制作一个Hangman游戏,但我遇到了问题(就像在,我无法解决如何)访问以编程方式创建的TextView。

我已经搜索了SO和其他地方,并且有很多设置ID使用textView.setId(View.generateViewId());的API前后方法或者创建一组ID资源并分配它们,但是没有& #39; t帮助我,因为我不知道每回合会创建多少视图(随机选取一个单词,每个字母创建TextViews )。

目前我正在创建如下视图:

private void createViewsForLetters(List<String> letters) {
    for (String letter : letters) {
        TextView textView = new TextView(this);
        textView.setId(View.generateViewId());
        textView.setText(letter);
        textView.setTextSize(50);
        textView.setLetterSpacing(0.5f);
        textView.setVisibility(View.INVISIBLE); //Will become visible on successful entry
        linearLayout.addView(textView);

        Log.v("HMmsg: TV ID's", String.valueOf(textView.getId()));
    }
}

哪个注销了TV ID's: 1, 2, 3, 4, 5

的ID
  • 那么,我如何访问这些以及TextViews的数量呢? 根据所选随机单词的大小而改变?

理想情况下,我希望能够获取用户的字符输入,并检查它是否在随机字被分割成的字母数组中(我已经完成了在下面,但获取该索引号所代表的TextView的ID ,以便我可以使用它再次显示相应的字母...... HANGMAN!

我正在使用它(它按原样工作)来验证用户条目:

private void actionUserEntry(List<String> letters) {
        if (currentLetter.isEmpty()) {
            Toast.makeText(getApplicationContext(), "You must enter something!", Toast.LENGTH_LONG).show();
        } else {
            if (letters.toString().contains(currentLetter)) {
                Log.v("HMmsg", currentLetter + " is in the word");
                linearLayout.setBackgroundColor(Color.GREEN);

                //TODO capture generated viewId to setVisibility on correct entry

            } else {
                Log.v("HMmsg", currentLetter + " is NOT in the word");
                linearLayout.setBackgroundColor(Color.RED);
            }
        }
    }

所以我只需要在上面的代码中对TODO提供一些帮助,如果你愿意的话!

谢谢=)

0 个答案:

没有答案