我正在开发某种"得分跟踪器"特定游戏的应用程序。用户添加一定数量的玩家(该数量目前是无限制的),然后将这些玩家名称添加到ArrayList。然后在下一个活动中,用户必须从Spinner中选择一个玩家名称并输入一定数量的"积分"或者让我们说"得分"那个球员。
这是我目前的代码:
public void submitScore(View v){
LinearLayout lLayout = (LinearLayout) findViewById (R.id.linearLayout);
final int position = playerList.getSelectedItemPosition();
EditText input = (EditText) findViewById(R.id.editText1);
final LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
final TextView newTextView = new TextView(this);
String enteredText = input.getText().toString();
if (enteredText.matches(""))
{
emptyTextError();
}
else
{
//NEW TEXTVIEW
newTextView.setLayoutParams(lparams);
newTextView.setText(players.get(position) + " " + score);
newTextView.setTextSize(20);
lLayout.addView(newTextView);
}
}
如您所见,用户输入某个分数,并创建一个包含玩家姓名和当前分数的新文本视图。
现在我想要做的是实现一个能够跟踪每个玩家得分的功能。
示例:用户添加了2个玩家,一个名为John,另一个名为Jack。然后用户向John添加了20分,然后又在20分之后又向John添加了20分。现在textViews看起来像这样:
John 20
John 40
然后,如果用户将向Jack添加10个点,向John添加20个,TextViews应如下所示:
John 20
John 40
杰克10John 60
这就是我不知道该怎么做。如何为每个ArrayList元素实现一个新的int变量?或者有没有比制作int变量更好的方法?
我需要应用程序自动生成符合ArrayList的int,如果ArrayList包含5个玩家,则需要创建5个int,因为我不知道用户将输入多少玩家。
答案 0 :(得分:1)
你应该创建一个类,也许叫做'Player'。每个玩家都有一个String值name
和一个int值score
。然后,每次创建新的Player时,您都可以将这些Player
实例添加到数组中。请参阅Java class toturial
答案 1 :(得分:0)
class PlayerScore{
String userName;
int score;
public PlayerScore(String userName, int score) {
this.userName = userName;
this.score = score;
}
//setter and getter
}
List<PlayerScore> playerScore=new ArrayList<PlayerScore>();
playerScore.add(new PlayerScore("John",20));
playerScore.add(new PlayerScore("John",40));
playerScore.add(new PlayerScore("Jack",10));
playerScore.add(new PlayerScore("John",60));
答案 2 :(得分:0)
尝试使用Map<String,Integer>
,以便更快地访问,请尝试HashMap<~>
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("John", 10);
map.put("Bob", 40);
如果要按名称排序,请使用TreeMap。如果你想按分数排序,请阅读这个旧帖子: Sort a Map<Key, Value> by values (Java)