spinner внутри пользовательского макета строки списка и адаптеров

Я просмотрел почти все темы по этому поводу и не нашел ответа (если он есть ..).
У меня есть приложение, которое представляет собой таблицу значений, и для каждого значения у меня есть счетчик для выбора пользователем.
Я реализовал это с помощью списка (можно также с помощью сетки с 1 столбцом) с пользовательским макетом (linearLayout с 2 textViews для идентификатора и VALUE_TEXT и Spinner).
Spinner также с пользовательским макетом - значение Id в счетчике и текст.
оба идентификатора (идентификатор значения ListView и идентификатор значения Spinner скрыты от пользователя и предназначены для моего использования).
у меня есть несколько вопросов о моей реализации:

1) это лучший способ реализовать строки в пользовательском интерфейсе (ListView и Spinners), когда вам нужно сохранить его идентификатор? я получаю данные от Json, который дает мне элементы ListView (ID и TEXT), и для каждого счетчика я получаю (после отправки идентификатора значения на сервер) значения для счетчика и их идентификатор. я общаюсь с сервером только с идентификаторами, поэтому мне нужно их где-то сохранить..

2) есть ли способ получить строку ListView (для получения ее идентификатора) из метода Spinner OnItemSelected? у меня есть только родительский параметр, который равен AdapterView.

3) Теперь я расширяю BaseAdapter (один для ListView и один для Spinner), чтобы иметь возможность заполнять данные в пользовательском интерфейсе. я использую его метод getView, чтобы раздуть пользовательский макет и поместить в него данные? нет ли более простого способа выполнить такое действие с помощью ArrayAdapter?

Большое спасибо.


person gabi    schedule 03.07.2013    source источник


Ответы (1)


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

Например, вы получаете метод onListItemClick(), который вызывается всякий раз, когда вы щелкаете элемент, что избавляет вас от создания отдельного слушателя.

Если вы хотите изменить макет ListActivity, вы все равно можете использовать метод setContentView() из Activity. Пока где-то в вашем представлении есть ListView с именем @android:id/list, ListActivity будет работать.

person Shankari vatsalkumar    schedule 03.07.2013
comment
Я понимаю это, и ты прав. единственная проблема с макетом - мне нужен счетчик в каждой строке, поэтому мне все еще нужен собственный макет и адаптер для него, нет? также - как ListActivity может помочь мне с выбором счетчика - мне нужно выполнить действие как с выбранным идентификатором счетчика, так и с идентификатором строки списка, который находится внутри счетчика (например, третья строка в списке имеет идентификатор [который является внешним ID, а не идентификатор строки ListView] из 7, и я выбираю в счетчике второй вариант с идентификатором 9, мне нужно выполнить POST на сервер с обоими идентификаторами, чтобы получить правильный ответ..) - person gabi; 03.07.2013