首页 > 解决方案 > findViewByID 中的变量 - Android Studio - Java

问题描述

我正在使用 Android Studio 编程并尝试编写剪刀石头纸游戏。现在我正在编写一个高分,用户可以在其中看到记录为 10 个元素的列表。

要在此列表中插入玩家的姓名,我在 Textview 中插入值:

TextView tempField = findViewById(R.id.playerName1);
tempField.setText(sharedpreferences.getString("name" + i, ""));

因为这些是 10 个元素,我需要为每个元素插入 3 个值,我想使用 for 循环来执行此操作。问题是我不能只在 R.id.playerName 后面放一个带有数字的变量。我试过了:

for(int i = 0; i < 10; i++){
   TextView tempField = findViewById("R.id.playerName" + i);
   tempField.setText(sharedpreferences.getString("name" + i, ""));
}

标签: javaandroid-studiofindviewbyid

解决方案


您可以创建任何对象的数组,您只需要使用循环遍历数组来分配它们的属性。

为了建立一个例子,让我们看一些事情:

据我了解,您需要为每个设置 3 个不同的值TextView。我假设您正在寻找类似于X: Name - Score. 我会使用一个for循环来设置三个不同的数组,这样你的值是本地的,而且如果你还没有在另一个循环中使用它们,它也可以让你更容易。

之后,我会用这样的东西来设置它:

TextView[] myTextViews = new TextView[10];

for (int tv = 0; tv < 10; tv++){

    myTextViews[tv] = new TextView(this);
    myTextViews[tv].setText(array1[tv] + ": Name:" + array2[tv] + "- Score:" array3[tv]); //per the format I mentioned above.
    parentView.addView(myTextViews[tv]);

}

其中 array1、array2 和 array3 是您在问题中提到的 3 个值。

这样您就可以在每次迭代中初始化每个 TextView 及其属性。你可以把它放在一个方法中,这样你就可以在每次创建新游戏时更新它,等等。


推荐阅读