2016-05-31 31 views
0

下面的代碼是一種創建從菜單欄調用的alertdialog的方法,該菜單欄包含從數據庫填充的微調器。此對話框有一個按鈕,它調用另一個方法打開另一個警報對話框,以將新供應商添加到微調數據庫。更新數據庫中的微調器值

我的問題是,在showAddVendorDialog向數據庫添加新值之後是否有這樣的方法,它會使用最近添加的值更新微調器。現在,如果我關閉了來自showAddDialog的對話框,它將在我再次打開它時顯示新值,但我希望它顯示新值而不必關閉它。

protected void showAddDialog() { 

    LayoutInflater layoutInflater = LayoutInflater.from(FlavorList.this); 
    View promptView = layoutInflater.inflate(R.layout.add_flavor_alert, null); 
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(FlavorList.this); 
    alertDialogBuilder.setView(promptView); 

    alertDialogBuilder.setTitle("Add Flavor"); 

    final List<String> spinnerArray = dbManager.getAllVendors(); 

    final ArrayAdapter<String> dataAdapter = new ArrayAdapter<>(this, 
      android.R.layout.simple_spinner_item, spinnerArray); 

    dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

    final EditText nameET = (EditText) promptView.findViewById(R.id.flavorname_add); 
    vendorSpinner = (Spinner) promptView.findViewById(R.id.vendor_spinner); 
    //final EditText brandET = (EditText) promptView.findViewById(R.id.flavorbrand_add); 
    final EditText weightET = (EditText) promptView.findViewById(R.id.flavorweight_add); 
    final Button addVendorButton = (Button) promptView.findViewById(R.id.btn_addvendor); 
    addVendorButton.setOnClickListener(new View.OnClickListener(){ 
     @Override 
     public void onClick(View v){ 

      showAddVendorDialog(); 
      dataAdapter.notifyDataSetChanged(); 

     } 

    });//end of addVendorButton listener 

    vendorSpinner.setAdapter(dataAdapter); 


    alertDialogBuilder.setCancelable(false) 
      .setPositiveButton("Add", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 

        final String name = nameET.getText().toString(); 
        final String brand = vendorSpinner.getSelectedItem().toString(); 
        final double weight = Double.valueOf(weightET.getText().toString()); 

        dbManager.insertFlavor(name, brand, weight); 

        Intent main = new Intent(getApplicationContext(), FlavorList.class) 
          .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

        startActivity(main); 
       } 
      }) 
      .setNegativeButton("Cancel", 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
          dialog.cancel(); 
         } 
        }); 


    AlertDialog alert = alertDialogBuilder.create(); 
    alert.show(); 
}//end showModifyDialog 

protected void showAddVendorDialog(){ 
    LayoutInflater vendorInflater = FlavorList.this.getLayoutInflater(); 
    View vendorView = vendorInflater.inflate(R.layout.add_vendor_alert, null); 
    AlertDialog.Builder vendorDialogBuilder = new AlertDialog.Builder(FlavorList.this); 
    vendorDialogBuilder.setView(vendorView); 

    vendorDialogBuilder.setTitle("Add New Vendor"); 

    final EditText vendorNameET = (EditText) vendorView.findViewById(R.id.new_vendor); 
    vendorDialogBuilder.setCancelable(false) 
      .setPositiveButton("Add", new DialogInterface.OnClickListener(){ 
       public void onClick(DialogInterface dialog, int id){ 
        final String vendorName = vendorNameET.getText().toString(); 

        dbManager.insertVendor(vendorName); 

       } 
      }) 
      .setNegativeButton("Cancel", 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
          dialog.cancel(); 
         } 
        }); 

    AlertDialog vendorAlert = vendorDialogBuilder.create(); 
    vendorAlert.show(); 
} 

回答

2

是的,你能做到這一點,對於當您添加供應商從addVendorDialog您將需要刷新showVendroDialogDataSet,併爲你將不得不刷新Spinner Adapter

對於您你做的是,聲明你spinnerArraydataAdapter在一流水平,

那麼當你添加一個供應商,即內部vendorDialogBuilderonClick()功能positiveButton可以刷新值這個樣子,

final String vendorName = vendorNameET.getText().toString(); 
dbManager.insertVendor(vendorName); 

spinnerArray = dbManager.getAllVendors(); 
dataAdapter.notifyDataSetChanged(); 

這將刷新微調值

+0

我做這一切,仍然沒有更新。是否在類中聲明併爲alertAddialog()聲明瞭AlertDialog,然後在數據庫更新後關閉並再次調用該方法。 – MarinheiroTX