Android临时更新微调器,它从SQLite获取值

时间:2013-10-03 15:01:07

标签: android android-sqlite android-spinner

我想知道是否有一些技巧可以让turinner从edittext和onClick更新,然后才能提交到数据库并从那里检索?列表和spinnerAdapter被设置为从数据库中检索值,所以我知道这个问题可能是愚蠢的。

我正在考虑这个逻辑:输入一些文本到edittext,单击确定,然后用文本临时更新微调器,然后再进入数据库,然后在活动中做一些其他的事情,最后将所有内容提交到数据库。然后,当您再次关闭并打开活动时,临时值将丢失,但是微调器会使用相同的值获得populatet,但这次是从数据库中获取的。

这里有一些代码:

    public class Vnos extends Activity {

 //... some values

    @Override
    protected void onCreate(Bundle savedInstanceState) {

//... 

        final Spinner spinner = (Spinner) findViewById(R.id.spinner1);

        final List<VnosiDB> spinerItems = datasource.getAllNiz();
        final ArrayAdapter<VnosiDB> spinnerAdapter = new ArrayAdapter<VnosiDB>(
                this, android.R.layout.simple_spinner_item, spinerItems);
        spinnerAdapter
                .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(spinnerAdapter);
        String nizIzSpinerja = spinner.getItemAtPosition(
                spinner.getSelectedItemPosition()).toString();
        nizDB = nizIzSpinerja;

        // nov niz

        novNiz = (TextView) findViewById(R.id.dodaj);
        novNiz.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                final Dialog dialog = new Dialog(Vnos.this,
                        android.R.style.Theme_Holo_Dialog);
                dialog.setContentView(R.layout.nov_niz);

                TextView okNov = (TextView) dialog.findViewById(R.id.okNovNiz);
                okNov.setOnClickListener(new android.view.View.OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub

                        EditText inputNiz = (EditText) dialog
                                .findViewById(R.id.niz);
                        dialog.dismiss();
                        nizDB = inputNiz.getText().toString();
                        spinnerAdapter.notifyDataSetChanged();

                    }
                });

                dialog.show();

            }

        });


// ...some other code...
//...
//.. then, here I commit everything to database...

        shrani = (TextView) findViewById(R.id.shrani);
        shrani.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                vnosDB = (int) System.currentTimeMillis();

                datasource.createVnos(zacetekDB, razlikaDB, nizDB, deloDB,
                        postavkaDB, dodatekDB, opisDB, vnosDB);
                datasource.close();
                Toast test = Toast.makeText(Vnos.this, "Vnos " + deloDB
                        + " uspešen!", Toast.LENGTH_LONG);
                test.show();
                startActivity(new Intent("com.sandpit.jazstudent.URE"));
                finish();

            }
        });


}

}

1 个答案:

答案 0 :(得分:0)

您正在使用由ArrayAdapter加载的List<VnosiDB>。我假设VnosiDB代表数据库中的记录。为什么不在需要时将临时记录放在此列表中?

List<VnosiDB> spinerItems = new ArrayList<VnosiDB>();
VnosiDB tempRec = new VnosiDB();
//set some values to the properties if you need to
spinnerItems.add(tempRec);
//populate the spinner with the temp record