В следующем коде я могу получить _id value
каждой записи и отобразить ее вместе с текстом в ListView
, но когда я выбираю элемент из списка, возвращаемое значение от 0 до N, в зависимости от того, как результаты выложены в списке.
Как я могу получить _id value
, я думаю, в качестве пары именованных значений, чтобы при выборе 0 или 1… выводилось поле _id
, а не 0 или 1… для моих OnItemClickListener
Это мой метод, он грязный, как только я его заработаю, я попытаюсь уточнить его!
private void GetCoordinates(double currentLatitude, double currentLongitude) {
List<String> ar = new ArrayList<String>();
dbBookHelper = new DatabaseHelper(this);
ourCursor = dbBookHelper.getCoordinates();
int counta = 0;
ourCursor.moveToFirst();
do {
id = ourCursor.getInt(ourCursor.getColumnIndex("_id"));
BeachName = ourCursor.getString(ourCursor.getColumnIndex("BeachName"));
beachLatitude = ourCursor.getDouble(ourCursor.getColumnIndex("latitude"));
beachLongitude = ourCursor.getDouble(ourCursor.getColumnIndex("longitude"));
distence = ConvertDistance(beachLatitude, beachLongitude);
if (distence <= 5) {
ar.add(id + " " + BeachName + " - " + distence + "Kms");
counta++;
}
} while (ourCursor.moveToNext());
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.row2, R.id.beachListText, ar);
setListAdapter(adapter);
ListView lv = getListView();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(onListClick);
Toast.makeText(getBaseContext(), "There are " + String.valueOf(counta) + " beaches within a 5km radius!", Toast.LENGTH_LONG).show();
}
А это мой метод OnItemClickListener
private AdapterView.OnItemClickListener onListClick = new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
Toast.makeText(getBaseContext(), String.valueOf(id) + " selected", Toast.LENGTH_LONG).show();
}
};
Любая помощь будет принята с благодарностью,
Приветствия
Mike.
Редактировать: Спасибо, ребята, я тоже надеялся на более приятный способ!
Но теперь у меня есть второй массив, содержащий только значения идентификатора, с
ar1.add(String.valueOf(id));
То есть позиции одинаковы, но как мне их поместить в OnItemClickListener? Я думаю, где-то здесь ???
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.row2, R.id.beachListText, ar);
setListAdapter(adapter);
ListView lv = getListView();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(onListClick);