/ / Nemôžem získať položky z ListAdapter - android, sqlite, listview, android-cursor

Nie je možné získať položky z ListAdapter - android, sqlite, listview, android-cursor

Čítal som údaje z databázy:

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

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

A nastavte k tomu adaptér:

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);

Vidím to ListView osídlené správne. Ale keď sa pokúsim získať reťazec položky, namiesto toho dostanem zvláštny reťazec: android.database.sqlite.SQLiteCursor@4251fac0

Tu je môj kód:

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);
}
});

Prečo nedostávam reťazec, ktorý sa zobrazuje v priečinku ListView?

odpovede:

1 pre odpoveď č. 1

Pretože metóda getItem vracia kurzor a na získanie efektívnej hodnoty požadovaného poľa musíte použiť getColumnIndex a getString. Tiež vidieť Vrátiť objekt z CursorAdapter.get ()

Príklad kódu:

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

Tak, ako ste to robili predtým, bolo volanie metódy .toString () na kurzorovom objekte, preto ste dostali ten zvláštny reťazec (čo je adresa objektu v jave).