0

我正在为某个游戏开发某种“分数跟踪器”应用程序。用户添加一定数量的玩家(目前数量不限),然后将这些玩家名称添加到 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。现在 textViews 应该如下所示:

约翰 20

约翰 40

然后如果用户给 Jack 加 10 分,给 John 加 20 分,TextViews 应该是这样的:

约翰 20

约翰 40

杰克 10

约翰 60

这是我不知道该怎么做。如何为每个 ArrayList 元素实现一个新的 int 变量?或者有比制作 int 变量更好的方法吗?

我需要应用程序根据 ArrayList 自动生成整数,如果 ArrayList 包含 5 个播放器,则需要创建 5 个整数,因为我不知道用户将输入多少个播放器。

4

3 回答 3

1

您应该创建一个类,可能称为“播放器”。每个玩家都有一个 String 值name和一个 int 值score。然后,您可以Player在每次创建新 Player 时将这些实例添加到数组中。在Java 类教程中查看如何操作

于 2013-08-28T13:49:59.157 回答
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)); 
于 2013-08-28T13:59:29.257 回答
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)

于 2013-08-28T14:10:47.153 回答