findViewByID中的变量-Android Studio-Java

问题描述 投票:0回答:1

我正在使用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, ""));
}
java android-studio findviewbyid
1个回答
0
投票

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

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

据我了解,您需要为每个TextView设置3个不同的值。我假设您正在寻找类似于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及其属性。您可以将其放入方法中,以便每次创建新游戏时都可以对其进行更新,等等。

© www.soinside.com 2019 - 2024. All rights reserved.