我试图用这种方法从bbdd获取一些数据
/**********************************************************************
* * Obten todos los nombres
*
*/
public Cursor getNombres(){
Cursor respuesta = db.rawQuery("select "+TABLE_ROW_ID+","+CNOMBRE+" from "+TABLE_NAME, null);
return respuesta;
}
在这个课程中
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Creamos la instancia de DataBaseHelper, un cursor y aplicamos el metodo getNombres al cursor.
ayudabbdd = new DataBaseHelper(this);
Cursor nombresC;
nombresC = (Cursor) ayudabbdd.getNombres();
startManagingCursor(nombresC);
//Mientras el cursor no este vacio rellenamos la lista con el adaptador, que nos sirve para conectar unos datos con el listview.
if(nombresC!=null){
ListAdapter adapter = new SimpleCursorAdapter(this, R.layout.listatab, nombresC, new String[] { "nombre" }, new int[] { R.id.lista });
this.setListAdapter(adapter);
this.getListView().setTextFilterEnabled(true);
}
}
但是log cat还给我那个
android.widget.ListView is not a view that can be bounds by this SimpleCursorAdapter
但是在一些教程中,这是从bbdd获取数组并且没有问题的方法
答案 0 :(得分:2)
如果您阅读了SimpleCursorAdapter的文档,那么构建函数(顺便说一下,已弃用)将从文档中获取TextViews的第5个参数:
to-> The views that should display column in the "from" parameter.
These should all be TextViews. The first N views in this list are
given the values of the first N columns in the from parameter.
Can be null if the cursor is not available yet.
相反,你给的是lista的id,它是一个ListView。尝试使用此更改:
int[] to = new int[] { android.R.layout.simple_list_item_1 };
...
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.listatab, nombresC, new String[] { "nombre" }, to);
En plus,如果您的活动扩展了ListActivity,则xml中的ListView必须具有以下ID:
android:id="@android:id/android:list"
看看这个example。