2017-02-20 5 views
0

회 전자를 데이터베이스에 쓸 수 없습니다. 나는 스피너에 관한 문서를 읽었지만 분명히 잘못된 것을하고있다. 누군가 조언을 해줄 수 있습니까? 많은 자습서를 읽었지만 혼란스러워졌습니다. 어떻게하면 스피너가 onClick에 데이터베이스에 쓸 수있게 할 수 있습니까? 이미 입력에 대해 하나 더 스피너를 추가하고 싶습니다.데이터베이스에 회 전자 값

import android.support.v7.app.AppCompatActivity; 
    import android.os.Bundle; 
    import android.view.View; 
    import android.widget.AdapterView; 
    import android.widget.ArrayAdapter; 
    import android.widget.Button; 
    import android.widget.EditText; 
    import android.widget.Spinner; 
    import android.widget.Toast; 

    import java.util.ArrayList; 
    import java.util.List; 

    public class AddActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener { 

     DatabaseHelper mylogsDB; 
     Button btn_save; 
     EditText etHours; 
     Spinner etShift; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_add); 
      etHours = (EditText) findViewById(R.id.editText); 
      etShift = (Spinner) findViewById(R.id.spinner); 
      btn_save = (Button) findViewById(R.id.btn_save); 
      mylogsDB = new DatabaseHelper(this); 

      AddData(); 

      // Spinner click listener 
      etShift.setOnItemSelectedListener(this); 

      // Spinner Drop down elements 
      List<String> categories = new ArrayList<>(); 
      categories.add("Πρωί"); 
      categories.add("Μεσημέρι"); 
      categories.add("Νύχτα"); 

      // 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 
      etShift.setAdapter(dataAdapter); 
     } 

      public void onItemSelected (AdapterView <?> parent, View view,int position, long id) { 
       // On selecting a spinner item 
       String item = parent.getItemAtPosition(position).toString(); 

       // Showing selected spinner item 
       Toast.makeText(parent.getContext(), "Έχετε επιλέξει: " + item, Toast.LENGTH_LONG).show(); 
     } 


     public void onNothingSelected(AdapterView<?> arg0) { 
      // TODO Auto-generated method stub 
     } 

     public void AddData() { 
      btn_save.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        String hours = etHours.getText().toString(); 
        String shift = etShift.getSelectedItem().toString(); 

        boolean insertData = mylogsDB.addData(hours, shift); 

        if (insertData == true) { 
         Toast.makeText(AddActivity.this, "Η αποθήκευση ολοκληρώθηκε επιτυχώς.", Toast.LENGTH_LONG).show(); 
        } else { 
         Toast.makeText(AddActivity.this, "Ώχ,Κάτι πήγε στραβά.", Toast.LENGTH_LONG).show(); 
        } 
       } 
      }); 
     } 
    } 

답변

0

당신은 또한 당신이 당신의 btn_saveonClick 이벤트에 AddData();를 호출해야 Spinner에서 선택한 값을 유지 한 다음

데이터베이스

에 삽입하기 위해 사용하는 방법에서 사용합니다!

public class AddActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener { 

    DatabaseHelper mylogsDB; 
    Button btn_save; 
    EditText etHours; 
    Spinner etShift; 
    private String spinnerSelectedItem; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_add); 
     etHours = (EditText) findViewById(R.id.editText); 
     etShift = (Spinner) findViewById(R.id.spinner); 
     btn_save = (Button) findViewById(R.id.btn_save); 
     mylogsDB = new DatabaseHelper(this); 

     btn_save.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       AddData(); 
      } 
     }); 

     // Spinner click listener 
     etShift.setOnItemSelectedListener(this); 

     // Spinner Drop down elements 
     List<String> categories = new ArrayList<>(); 
     categories.add("Πρωί"); 
     categories.add("Μεσημέρι"); 
     categories.add("Νύχτα"); 

     // 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 
     etShift.setAdapter(dataAdapter); 
    } 

    public void onItemSelected (AdapterView <?> parent, View view,int position, long id) { 
     // On selecting a spinner item 
     spinnerSelectedItem = parent.getItemAtPosition(position).toString(); 

     // Showing selected spinner item 
     Toast.makeText(parent.getContext(), "Έχετε επιλέξει: " + spinnerSelectedItem, Toast.LENGTH_LONG).show(); 
    } 


    public void onNothingSelected(AdapterView<?> arg0) { 
     // TODO Auto-generated method stub 
    } 

    public void AddData() { 

     String hours = etHours.getText().toString(); 
     //spinnerSelectedItem should have a value 

     if(!hours.equals("") && !spinnerSelectedItem.equals("")){ 
      boolean insertData = mylogsDB.addData(hours, spinnerSelectedItem); 
      if (insertData == true) { 
       Toast.makeText(AddActivity.this, "Η αποθήκευση ολοκληρώθηκε επιτυχώς.", Toast.LENGTH_LONG).show(); 
      } else { 
       Toast.makeText(AddActivity.this, "Ώχ,Κάτι πήγε στραβά.", Toast.LENGTH_LONG).show(); 
      } 
     }else{ 
      //do something 
     } 
    } 
} 
+0

이 라인에 에러를 제공 : ArrayAdapter와 데이터 어댑터 = 새로운 ArrayAdapter와 (이, android.R.layout.simple_spinner_item 카테고리); 선언문을 찾을 수 없다고 말했습니다. btn_save 내에서 equals와 AND를 수행합니다. –

+0

어떤 줄과 무엇이 오류입니까? –

+0

이 줄에 오류가 있습니다 : ArrayAdapter dataAdapter = new ArrayAdapter (this android.R.layout.simple_spinner_item, categories); (이) 선언을 찾을 수 없습니다. btn_save 내에서 equals와 AND를 수행합니다. –