2016-11-13 4 views
0

Мне нужно постоянно обновлять свой Spinner после добавления данных, которые он показывает.
Часть моего кода:Обновление Spinner с использованием базы данных SQLite

public class MainActivity extends AppCompatActivity { 
ArrayAdapter<String> adapter; 
Spinner spinner; 

protected void onCreate(Bundle savedInstanceState) { 
ArrayList<String> categories = databaseHelper.getAllCategories(); 
spinner = (Spinner) findViewById(R.id.spinner); 
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, categories); 
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
spinner.setAdapter(adapter); 
} 

В DatabaseHelper классе, я сделать простой запрос, который выбирает один столбец.

ответ

2
public class MainActivity extends AppCompatActivity { 
ArrayAdapter<String> adapter; 
Spinner spinner; 
ArrayList<String> categories; 

protected void onCreate(Bundle savedInstanceState) { 
categories = databaseHelper.getAllCategories(); 
spinner = (Spinner) findViewById(R.id.spinner); 
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, categories); 
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
spinner.setAdapter(adapter); 
} 

private function updateSpinner(){ 
    categories.clear(); 
    categories.addAll(databaseHelper.getAllCategories()); 
    adapter.notifyDataSetChanged(); 
} 
+0

Спасибо, брат! :) – Mariachi

+1

Должен ли вы вызвать этот метод? И 'categories.add' может быть заменен на' adapter.addAll' со списком в качестве параметра –

+0

@Mariachi u r welcome. рассмотрите также комментарий @ cricket_007. вместо этого для цикла вы можете заменить на 'adapter.addAll'. Я обновлю ответ и не забуду принять ответ (знак галочки). – mismanc

Смежные вопросы