Android Custom ListПросмотреть выбранный элемент детей? - PullRequest
2 голосов
/ 27 октября 2010

У меня есть настраиваемая строка списка, содержащая несколько компонентов 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);
            }       
        };

1 Ответ

0 голосов
/ 27 октября 2010

Вы пытаетесь сделать слишком много из класса адаптера по умолчанию. Вам нужно написать свой собственный класс адаптера, расширить simplecursoradapter, а затем вы можете создать любой метод, который вы хотите получить, в любом месте, где вы хотите.

...