Obtener datos listItem de una lista

Odio una lista creada por un simple adaptador de cursor:

Cursor c = myDbHelper.rawQ(select);
    startManagingCursor(c);

    // the desired columns to be bound
    String[] columns = new String[] { "Books.BookTitle",
            "Publishers.Publisher" };
    // the XML defined views which the data will be bound to
    int[] to = new int[] { R.id.ISBN_entry, R.id.Title_entry };

    // Getting results into our listview
    try {
        SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this,
                R.layout.listlayout, c, columns, to);
        this.setListAdapter(mAdapter);
    } catch (Exception e) {

    }

El diseño involucrado con la lista son dos vistas de texto simples.

Lo que quiero hacer es crear un oyente

 @Override
protected void onListItemClick(ListView l, View v, int position, long id) { 

La parte en la que estoy fallando es recuperar la parte BookTitle de la entrada específica (fila) para volver a consultar la base de datos y presentar los datos con AlertDialog.Builder.

Cuando intento hacer:

 String selection = l.getItemAtPosition(position).toString(); 

Solo obtengo android.database.sqlite SQLiteCursor @ 44f99e80 y estoy bastante confundido sobre cómo se debe hacer esto (sé por qué es crashign simplemente no puede; no entiendo cómo se debe hacer correctamente.

Atm de código completo:

...
Cursor c = myDbHelper.rawQ(select);
    startManagingCursor(c);

    // the desired columns to be bound
    String[] columns = new String[] { "Books.BookTitle",
            "Publishers.Publisher" };
    // the XML defined views which the data will be bound to
    int[] to = new int[] { R.id.ISBN_entry, R.id.Title_entry };

    // Getting results into our listview
    try {
        SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this,
                R.layout.listlayout, c, columns, to);
        this.setListAdapter(mAdapter);
    } catch (Exception e) {

    }



}

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
 // TODO Auto-generated method stub
 //super.onListItemClick(l, v, position, id);
 String selection = l.getItemAtPosition(position).toString();  
 new AlertDialog.Builder(v.getContext())
 .setTitle("Title")
 .setMessage(selection)
 .setPositiveButton(android.R.string.ok, null)
 .show();
} }

preguntado el 16 de mayo de 11 a las 18:05

2 Respuestas

Prueba algo como esto ...

Cursor theCursor = ((SimpleCursorAdapter)((ListView)l).getAdapter()).getCursor();
String selection = theCursor.getString(theCursor.getColumnIndex("Books.BookTitle"));

contestado el 16 de mayo de 11 a las 23:05

@GGe: Me alegro de haber podido ayudar. - Squonk

Solo obtén los datos del cursor:

 l.getItemAtPosition(position).getString(0); // it might be 1

Vea aquí.

contestado el 16 de mayo de 11 a las 22:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.