java - 如何对 listView 中输入的数字进行加法?我试过这种方式它不起作用
问题描述
公共类 MainActivity 扩展 AppCompatActivity {
EditText actv;
Button bt, total;
ListView lt;
String getInput;
ArrayAdapter adapter;
TextView tv;
整数,总和=0;final ArrayList addArray = new ArrayList();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
actv = (EditText) findViewById(R.id.autoCompleteTextView) ;
bt = (Button) findViewById(R.id.button);
total = (Button)findViewById(R.id.btt) ;
tv = (TextView) findViewById(R.id.textView);
lt = (ListView) findViewById(R.id.listView);
// 用于创建包含数字的列表视图的按钮
bt.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View view) {
getInput = actv.getText().toString();
num = Integer.valueOf(getInput);
addArray.add(num);
adapter = new ArrayAdapter(MainActivity.this,
android.R.layout.simple_list_item_1,addArray);
lt.setAdapter(adapter);
((EditText) findViewById(R.id.autoCompleteTextView)).setText("");
}
});
// 另一个按钮来计算所有数字的总和
total.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
for (int i = 0; i <addArray.size() ; i++) {
sum = sum + addArray.get(i);
}
tv.setText(sum);
}
});
当我在edittext中输入多个数字时,它按预期显示在列表视图中,但应用程序崩溃并且在单击按钮后不执行添加
解决方案
你永远不应该假设你的数组是有效的而不先检查它们......尝试添加一些安全措施:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
actv = (EditText) findViewById(R.id.autoCompleteTextView) ;
bt = (Button) findViewById(R.id.button);
total = (Button)findViewById(R.id.btt) ;
tv = (TextView) findViewById(R.id.textView);
lt = (ListView) findViewById(R.id.listView);
addArray = new ArrayList();
...
public void onClick(View view) {
getInput = actv.getText().toString();
num = Integer.valueOf(getInput);
if (addArray !=null) {
addArray.add(num);
adapter = new ArrayAdapter(MainActivity.this,
android.R.layout.simple_list_item_1,addArray);
lt.setAdapter(adapter);
}
((EditText) findViewById(R.id.autoCompleteTextView)).setText("");
}
...
total.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if ((addArray != null) && (addArray.size() > 0)) {
for (int i = 0; i <addArray.size() ; i++) {
sum = sum + addArray.get(i);
}
tv.setText(sum);
}
}
});