Я хотел бы иметь общую операцию «Chooser» - одну, которая может быть снабжена абстрактным источником данных, извлекать данные из указанного источника, представлять данные в ListView
и возвращать выбранный элемент назад к вызывающей деятельности. Что-то очень похоже на RingtonePickerActivity
.Передача «источника данных» между действиями
Я не могу понять, как передать общий источник данных из одной активности в другую. Все, что я видел до сих пор в обмене данными между действиями, - это передача данных через дополнительные приложения Intent
. Но для меня это, похоже, не работает, поскольку я не хочу предоставлять фактические данные. Я хочу передать ссылку на абстрактный источник данных, который может быть запрошен (в отличие от Cursor
).
Тут я хотел бы подчеркнуть, что я хотел бы выбирающий быть агностиком фактического источника данных - абстрактный источник данных обеспечит методы как getNextItem
, getItemName
, getItemValue
. Лучшие модели этого, о которых я могу думать, - это курсоры или итераторы - чисто абстрактные механизмы итерации по набору данных.
Поскольку все действия приложения размещены в одном процессе, это должно быть возможно? Одна вещь, которую я хочу , не хочу, чтобы, чтобы иметь глобальную переменную источника данных внутри моего приложения, по множеству причин (один из них является тем фактом, что я буду запускать несколько действий выбора с несколькими источниками данных) - я хочу для предоставления данных для запуска активности во время запуска.
Возможно ли это? Я ужасно ошибаюсь? Есть ли способ лучше?
Прошу прощения, если я не был достаточно ясен. Дело в том, что я хочу, чтобы активность «Chooser» получала данные, не зная, откуда она взялась. Курсор, вероятно, хороший пример - я хочу, чтобы активность могла извлекать данные из источника, ничего не зная об этом. Другая модель может быть абстрактным итератором - то, что вы можете задать для следующего элемента. – SergeyA
@SergeyA: «Я хочу, чтобы активность могла извлекать данные из источника, ничего не зная об этом» - um, ну, «Курсор» не работает. «Курсор» * - это данные, и вы заявили, что не хотите передавать фактические данные. Чтобы получить «Курсор», вам нужно знать, как его получить. Это может быть имя базы данных и запрос, или это может быть «ContentProvider» 'Uri' и запрос. «Еще одна модель может быть абстрактным итератором - что-то, что вы можете задать для следующего элемента» - um, это не то, как работают итераторы, поскольку вы затем передаете данные. – CommonsWare
Я попытался изменить вопрос для ясности. Дайте мне знать, если это имеет смысл или не имеет смысла :) – SergeyA