首页 > 解决方案 > 如何对 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中输入多个数字时,它按预期显示在列表视图中,但应用程序崩溃并且在单击按钮后不执行添加

标签: javaandroidarrayslistviewarraylist

解决方案


你永远不应该假设你的数组是有效的而不先检查它们......尝试添加一些安全措施:

@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);
        }
    }
});

推荐阅读