Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在android中使用onItemSelected_Java_Android_Sqlite_Spinner - Fatal编程技术网

Java 如何在android中使用onItemSelected

Java 如何在android中使用onItemSelected,java,android,sqlite,spinner,Java,Android,Sqlite,Spinner,我需要根据下拉列表中的选择更新我的表。 有一些计算正在进行,我不确定它们是否在正确的位置 我想更新变量dconsumed,下拉列表中有5个选项,一个不同的数字将添加到此变量,然后在单击“添加”按钮后再次保存到数据库中 这是我的密码 public class WaterActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener{ SQLiteOpenHelper openHelper;

我需要根据下拉列表中的选择更新我的表。 有一些计算正在进行,我不确定它们是否在正确的位置

我想更新变量dconsumed,下拉列表中有5个选项,一个不同的数字将添加到此变量,然后在单击“添加”按钮后再次保存到数据库中

这是我的密码

public class WaterActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener{

    SQLiteOpenHelper openHelper;
    SQLiteDatabase db;
    Cursor cursor;
    TextView percantage,outof;
    Button addbtn;
    double waterneeded;
    double neededinounces;
    double weightinpound;
    String userId;

    double dconsumed;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_water);

        // DB
        openHelper=new DatabaseHelper(this);
        db = openHelper.getWritableDatabase();

        // get id from homepage
        userId = getIntent().getExtras().getString("id");
        cursor = db.rawQuery("SELECT * FROM " + R_TABLE_NAME + " WHERE " + DatabaseHelper.R_COL_1 + "=? ", new String[]{userId});
        if(cursor!=null){
            if (cursor.getCount()>0){
                cursor.moveToNext();
                String STRconsumed = cursor.getString(cursor.getColumnIndex(DatabaseHelper.R_COL_9));
                String STRweight = cursor.getString(cursor.getColumnIndex(DatabaseHelper.R_COL_10));

                //string to double
                double dconsumed = Double.valueOf(STRconsumed).doubleValue();
                double dweight = Double.valueOf(STRweight).doubleValue();

                //calculate water needed
                weightinpound = dweight * 2.2046;
                neededinounces = weightinpound * 2/3;
                waterneeded = neededinounces * 0.0295735;

                //show in text view
                percantage = (TextView) findViewById(R.id.percID);
                percantage.setText((dconsumed/waterneeded)*100+"%");
                outof = (TextView) findViewById(R.id.outofID);
                outof.setText( dconsumed + " L out of " + String.format("%.1f", waterneeded) + " L");
            }else{
                Toast.makeText(getApplicationContext(),"..",Toast.LENGTH_LONG).show();
            }
        }

        // Spinner element
        Spinner spinner = (Spinner) findViewById(R.id.spinner);
        // Spinner click listener
        spinner.setOnItemSelectedListener(this);
        // Spinner Drop down elements
        List<String> categories = new ArrayList<String>();
        categories.add("0.1 L");
        categories.add("0.2 L");
        categories.add("0.3 L");
        categories.add("0.33 L");
        categories.add("0.6 L");

        // Creating adapter for spinner
        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, categories);
        // Drop down layout style - list view with radio button
        dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        // Attaching data adapter to spinner
        spinner.setAdapter(dataAdapter);
        // To select item
        spinner.setOnItemSelectedListener(this);

        addbtn = (Button)findViewById(R.id.buttonAdd);

        addbtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String consumedStr = Double.toString(dconsumed);
                updateConsumed(consumedStr);
                Toast.makeText(getApplicationContext(),"Cup is added!",Toast.LENGTH_LONG).show();
                //Intent i = new Intent(WaterActivity.this, WaterActivity.class);
                //startActivity(i);
            }
        });
    }

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        //String sSelected=parent.getItemAtPosition(position).toString();
        //Toast.makeText(this,sSelected,Toast.LENGTH_SHORT).show();

        switch (position) {
            case 0:
                // Whatever you want to happen when the first item gets selected
                dconsumed = dconsumed + 0.1;
                //String strconsumed = Double.toString(consumed);
                //updateConsumed(strconsumed);
                break;
            case 1:
                dconsumed = dconsumed + 0.2;
                break;
            case 2:
                dconsumed = dconsumed + 0.3;
                break;
            case 3:
                dconsumed = dconsumed + 0.33;
                break;
            case 4:
                dconsumed = dconsumed + 0.6;
                break;
        }
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {

    }

    public void updateConsumed(String consumed){
        ContentValues cv = new ContentValues();
        cv.put(DatabaseHelper.R_COL_9,consumed);
        db.update(R_TABLE_NAME, cv,"ID=?",new String[] {userId});
    }

}

您可以在交换机中使用updateConsumed方法,如下所示:

case 0:
 dconsumed = dconsumed+0.1;
 updateConsumed(dconsumed.toString());
 break;

你能告诉我问题出在哪里吗?当我点击“添加”按钮时,什么都没有发生,表格没有更新,我返回到上一个界面系统崩溃,我返回到第一个界面bug你的代码你会得到你的应用程序崩溃的那行代码。我在更新功能中遇到问题,现在一切正常谢谢!