我在我的代码中使用了ArrayList
,它由EditText
字段填充,但我想限制ArrayList
,因此它只能容纳10个值。添加10个值后,如果另一个值尝试添加,我只需要它不添加到Array
。任何人都有任何想法如何做到这一点?
private static ArrayList<String> playerList = new ArrayList<String>();
答案 0 :(得分:10)
如果您无法控制向列表添加元素的功能,您可能希望覆盖ArrayList
add
。
public class MySizeLimitedArrayList extends ArrayList<Object> {
@Override
public boolean add(Object e) {
if (this.size() < 10) {
return super.add(e);
}
return false;
}
}
答案 1 :(得分:8)
在你的处理程序方法中:
if(playerList.size() < 10) {
// playerList.add
} else {
// do nothing
}
修改:您的错误就在这里:
if(playerList.size() < 10) {
Button confirm = (Button) findViewById(R.id.add);
confirm.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
EditText playername = (EditText) findViewById(R.id.userinput);
playerList.add(playername.getText().toString());
adapter.notifyDataSetChanged();
playername.setText("");
}});
} else {
// do nothing
}
您应该检查onClickListener
内的尺寸,而不是外面的尺寸:
Button confirm = (Button) findViewById(R.id.add);
confirm.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
EditText playername = (EditText) findViewById(R.id.userinput);
if(playerList.size() < 10) {
playerList.add(playername.getText().toString());
adapter.notifyDataSetChanged();
playername.setText("");
} else {
// do nothing
}
}
});
答案 2 :(得分:2)
ArrayList
无法限制大小;你可以扩展它以包括一个限制:
public class FixedSizeLimitedArrayList extends ArrayList<Object> {
@Override
public boolean add(Object o) {
int n=10;
if (this.size() < n) {
return super.add(o);
}
return false;
}
}
其他选项包括:
答案 3 :(得分:0)
您可以像这样修改setter方法。
private static ArrayList<String> playerList = new ArrayList<String>();
public boolean addToPlayerList(String input) {
if (playerList.size() < 10) {
playerList.add(input);
return true;
} else {
return false;
}
}
或者
您可以扩展ArrayList
并创建自己的自定义类。
public class MyArrayList extends ArrayList {
@Override
public boolean add(String input) {
if (this.size() < 10) {
return super.add(input);
} else {
return false;
}
}
}