从 ListView 获取项目

Getting item from ListView

我正在做一个 android 项目,但遇到了困难。我正在尝试从 ListView 获取项目,但我得到的只是有关项目在我创建的数据库中的位置的信息,而不是项目本身。

这是我的代码:

public class Map extends Activity { 

Cursor cursor;
ListView listView;
String categoria = "livro";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.map);

    final CitySQL dbHelper = new CitySQL(Map.this, null, null, 1);
    final SQLiteDatabase db = dbHelper.getWritableDatabase();

    final String[] camposDb = {"city", BaseColumns._ID};
    cursor = db.query("cities", camposDb, null, null, null, null, "city ASC");
    int[] camposView = new int[] {android.R.id.text1};

    @SuppressWarnings("deprecation")
    final SimpleCursorAdapter adapter = new SimpleCursorAdapter(Map.this, 
            android.R.layout.two_line_list_item, cursor, camposDb, camposView);
    listView= (ListView)findViewById(R.id.city_list);
    listView.setAdapter(adapter);
    final Geocoder geocoder=new Geocoder(this, Locale.ENGLISH);

    listView.setOnItemClickListener(new OnItemClickListener(){
        @TargetApi(Build.VERSION_CODES.HONEYCOMB) 
        public void onItemClick(AdapterView<?> parent, View view, int posicao,long id) {

            final String morada = listView.getAdapter().getItem(posicao).toString();
            Toast.makeText(Map.this, morada, Toast.LENGTH_LONG).show();

我做了一个 Toast 以查看单击时发生了什么,但我的目标是获取项目(城市名称)并查找位置。

改变

final String morada = listView.getAdapter().getItem(posicao).toString();

Cursor cursor = (Cursor) listView.getAdapter().getItem(posicao);
String morada = cursor.getString(cursor.getColumnIndex("column_name_for_city"));