Как получить _id из позиции ListView

74
10

Мне нужно получить _id элемента в Listview. Все, что я могу получить, это позиция. Как мне это сделать?. Это код, который я использую.

public class OSListActivity extends ListActivity { 
................
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
................
................
MatrixCursor cursor;
cursor = datasource.getnameList();
if (cursor.moveToFirst()) {
startManagingCursor(cursor);
String vdstatus = cursor.getString(6);
System.out.println("vdstatus : " + vdstatus);
String[] from = { "name", "desc", "status", "path", "folder",
BaseColumns._ID };
int[] to = { R.id.name, R.id.desc, R.id.status, R.id.path };
final VSsimplecursoradapter adapter = new VSsimplecursoradapter(
this, R.layout.row, cursor, from, to);
setListAdapter(adapter);
}
}

@Override
public void onListItemClick(ListView parent, View view, int position,
long id) {
Intent intent = new Intent(this, VSDetailsActivity.class);
intent.putExtra("com.manager.boot.r1223."+BaseColumns._ID, position);//TODO put _id instead of position
startActivity(intent);
}
}

Изменение: решение

public void onListItemClick(ListView parent, View view, int position,
long id) {
// Starts TestDetails activity on clicking a list item.
Cursor cursor = (Cursor) adapter.getItem(position);
Intent intent = new Intent(this, VSDetailsActivity.class);
intent.putExtra("com.manager.boot.r1223."+BaseColumns._ID, cursor.getInt(cursor
.getColumnIndex("_id")));
startActivity(intent);
}

спросил(а) 2012-03-01T04:34:00+04:00 7 лет, 9 месяцев назад
2
Решение
88

У тебя это уже есть. Посмотрите параметры для метода. См. Раздел "Длинные идентификаторы"? Это то, что вы ищете.

ответил(а) 2012-03-01T04:43:00+04:00 7 лет, 9 месяцев назад
Еще 1 ответ
32

Я использую String s = ((Cursor) l.getItemAtPosition(position)).getString(0); и просто разобрать его надолго.

ответил(а) 2012-03-01T05:41:00+04:00 7 лет, 9 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема