为每个ArrayList元素创建一个单独的整数?

时间:2013-08-28 13:45:54

标签: java android eclipse arraylist

我正在开发某种"得分跟踪器"特定游戏的应用程序。用户添加一定数量的玩家(该数量目前是无限制的),然后将这些玩家名称添加到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

     杰克10

     

John 60

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

我需要应用程序自动生成符合ArrayList的int,如果ArrayList包含5个玩家,则需要创建5个int,因为我不知道用户将输入多少玩家。

3 个答案:

答案 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)