我有一个微调器,我用数据库sqlite列中的光标填充,这个工作正常,但并不理想。我添加了另一个微调器来选择一个列并在微调器中显示它,但是当我构建适配器时这是我的问题。这是我的代码:
cursor = myDB.obtenerColumna(getBaseContext(),elemento);
String[] columns = new String[] { "_id", "columna", "columnb", "columnc", "columnd" };
menudesplegable.setPrompt(getText(R.string.seleccionaEtiqueta));
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
android.R.layout.simple_spinner_item,cursor,
columns, new int[] {android.R.id.text1});
adapter.setDropDownViewResource
(android.R.layout.simple_spinner_dropdown_item);
我正确地从数据库中获取列,但是如果我从其他列传递游标,则应用程序无法构建适配器。我尝试只在String []中传递名称列,但也失败了。
感谢。
答案 0 :(得分:0)
我解决了这个问题:
/**
* Crea el menú desplegable para seleccionar tiqueta.
*/
public void construirMenuDesplegable(String elemento) {
// get items of database using selected element in other spinner
cursor = myDB.obtenerColumna(getBaseContext(), elemento);
menudesplegable.setPrompt(getText(R.string.seleccionaEtiqueta));
// Create adapter
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
android.R.layout.simple_spinner_item, cursor,
new String[] { elemento }, new int[] { android.R.id.text1 });
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Indicate adapter
menudesplegable.setAdapter(adapter);
try {
myDB.close();
} catch (Exception e) {
Log.e("miError", "Error al cerrar db", e);
}
}
/**
* Build spinner for select a element for show in other spinner.
*/
public void construirMenuDesplegable2() {
// Create adapter
ArrayAdapter<CharSequence> adapter2 = ArrayAdapter.createFromResource(
this, R.array.listables, R.layout.custom_spinner);
adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Indicate adapter
menudesplegable2.setAdapter(adapter2);
}
答案 1 :(得分:0)
无需做完整件事。
第一个微调器填充后只需关闭 光标。
mycursor.close();
然后对第二个微调器重复相同的逻辑。