Я проверил ваш код и всегда вызываю db.insertData (), потому что в начале счетчик getCount всегда равен 0.
Итак, я позволил вам внести некоторые изменения, которые я сделал в вашей MainActivity, а также создал метод в классе Database, чтобы узнать, когда мне нужно заполнить базу данных или нет.
MainActivity
public class MainActivity extends AppCompatActivity implements Spinner.OnItemSelectedListener{
private Spinner spinner;
private Database db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spinner = findViewById(R.id.spinner);
db = new Database(getApplicationContext());
if(db.shouldPopulate()){
db.insertData();
}
loadData();
}
public void loadData(){
List<String> labels = db.getAllLabels();
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, labels);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setOnItemSelectedListener(this);
spinner.setAdapter(dataAdapter);
}
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
String label = adapterView.getItemAtPosition(i).toString();
Toast.makeText(adapterView.getContext(),"Selected: "+label,Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
}
База данных
Здесь я изменил условие результата в методе insertData для результата вставки.
И я создал метод, чтобы знать, когда вы должны вставить данные.
public boolean insertData() {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COLUMN_2, "1");
contentValues.put(COLUMN_3, "2");
contentValues.put(COLUMN_4, "3");
return db.insert(TABLE_NAME, null, contentValues) != -1;
}
public boolean shouldPopulate(){
return getAllLabels().isEmpty();
}
Надеюсь, этот код поможет вам.
ВАЖНО
Вы должны обернуть свои вызовы БД в фоновый обработчик, это очень важно в приложениях для Android для повышения производительности и рекомендаций.