android.widget.ListView不是可由此SimpleCursorAdapter绑定的视图

时间:2011-12-08 00:39:43

标签: android sqlite listview simplecursoradapter

我试图用这种方法从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获取数组并且没有问题的方法

1 个答案:

答案 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