/ / No puedo obtener elementos de ListAdapter - Android, sqlite, listview, android-cursor

No se pueden obtener elementos de ListAdapter: android, sqlite, listview, android-cursor

Leí datos de la base de datos:

private MyDatabase db;
private Cursor cities;
private ListAdapter cityListAdapter;
private ListView    citiesListView;

db = new MyDatabase(getContext());
cities = db.getCities();

Y configura un adaptador para ello:

cityListAdapter = new SimpleCursorAdapter(getContext(),
android.R.layout.simple_list_item_1,
cities,
new String[] {"city"},
new int[] {android.R.id.text1},0);

citiesListView.setAdapter(cityListAdapter);

Puedo ver el ListView poblado correctamente Pero cuando trato de obtener la cadena de un elemento, obtengo una cadena extraña en su lugar: android.database.sqlite.SQLiteCursor@4251fac0

Aquí está mi código para esto:

citiesListView.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
String str = cityListAdapter.getItem(position).toString();

chosenCityTextView.setText(str);
}
});

¿Por qué no estoy recibiendo la cadena que aparece en el ListView?

Respuestas

1 para la respuesta № 1

Debido a que el método getItem devuelve un cursor, y luego tiene que usar getColumnIndex y getString para obtener el valor efectivo del campo que desea. Ver también Devolver objeto desde CursorAdapter.get ()

Ejemplo de código:

Cursor cursor = (Cursor) cityListAdapter.getItem(position);
String city = cursor.getString(cursor.getColumnIndex("city"));
chosenCityTextView.setText(city);

La forma en que lo hiciste antes fue llamar al método .toString () en el objeto del cursor, es por eso que obtuviste esa cadena extraña (que es la dirección del objeto en java).