У меня есть настраиваемая строка списка, содержащая несколько компонентов textView. Вместо «стандартного» отдельного текстового элемента я создал элемент, в котором каждая строка списка содержит несколько битов информации. Для этого примера у меня есть идентификатор записи, имя и описание для каждой строки в списке.
Мой список заполнен через
this.mDbHelper = new RecordDBAdapter(this);
this.mDbHelper.open();
Cursor c = this.mDbHelper.fetchAllRecords();
startManagingCursor(c);
String[] from = new String[] {RecordDBAdapter.ROW_ID, RecordDBAdapter.NAME, RecordDBAdapter.DESCRIPTION};
int[] to = new int[] {R.id.recordId, R.id.lblName, R.id.lblDescription};
// Now create an array adapter and set it to display using our row
SimpleCursorAdapter records = new SimpleCursorAdapter(this, R.layout.record_row, c, from, to);
this.list.setAdapter(dives);
Теперь я хочу получить доступ к значению recordId в каждом элементе, по которому щелкнули. Я пытался следовать учебникам Android безрезультатно. Они делают что-то вроде
Object o = adapter.getItemAtPosition(position);
но это тоже не помогает. Чего я действительно хочу, так это получить значение recordId WITHIN для каждого выбранного элемента listItem. Кто-нибудь знает, как это будет сделано? Вот мое событие onItemClick:
protected OnItemClickListener onListItemClick = new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> adapter, View view, int position, long rowId) {
// My goal is either to grab the value of the
// recordId value from the textView, or from the adapter.
//Object o = adapter.getItemAtPosition(position); //Tried this, no joy
Intent intent = new Intent(NeatActivity.this, SomeOtherActivity.class);
// intent.putExtra("selectedRecordId",val); //val here is a numerical record row id being passed to another activity.
startActivity(intent);
}
};