Есть интернет-магазин, нужно написать для него приложение, а точнее для работы с его админкой.
Основными функциями должны быть:
добавление/изменение/удаление товаров
просмотр списка заказов
просмотр категорий/подкатегорий/товаров в виде дерева или каких-то
выпадающих списков
В качестве обмена данными с сервером используются REST API. В ответ сервер отдает JSON.
Для выполнения запросов использую ApacheHttpClient (смотрю в сторону библиотеки Volley). Для этого у меня создан класс со статическими переменными и методами для каждого запроса.
На данном этапе интересует следующее:
в главном Активити есть кнопка "получить древо категорий" —» вызывается класс со статическим методом для данного запроса —» в ответ получаю JSON-ом список категорий/ подкатегорий.
Коротко о работе приложения:
В MainActivity пользователь нажимает на кнопку найти товар по id -->> вызывается асинхронный запрос который обращается к статическому методу класса API.getProductById(String id) -->> метод посылает нужный запрос на сервер и получает от него ответ -->> далее метод .getProductById(String id) отправляет ответ в MainActivity -->> в MainActivity формируется интент с получеными данными и отправляется в нужную активити где и отображаются данные для пользователя.
Вопросы:
1) правильный ли я использую подход для выполнения запросов?
2) как поступить с полученным ответом, где и как его лучше хранить, возможно использовать БД?
3) каким способом можно отобразить данное дерево в Активити, что бы при нажатии на товар я мог просмотреть о нем информацию?
КАТЕГОРИЯ
-подкатегория
-товар
-товар
-подкатегория
-товар
-товар
4) Какая иерархия классов должна присутствовать в подобном приложении.
5) Так же интересует: архитектура подобных приложений и какие средства используются для их реализации? Возможно какие-то примеры, литература...
P.S. Это первый опыт написания функционально приложения для Android с помощью Java, буду рад любой информации!
Ответ
Вы немного неверно строите архитектуру. Вам надо:
Вынести обращения к серваку в отдельный сервис, который крутится в своем потоке - см. в сторону IntentService
Полученые от Rest API данные надо складывать в SQLite БД, иначе если не будет коннекта или коннект будет медленный у вас ничего не будет показываться.
Показывать нужно всегда данные из БД, причем посредством ContentProvider над этим БД. ContentProvider должен давать вам Cursor, а от курсора вы должны рисовать уже свои деревья/списки.
В итоге получится так, что в фоне у вас будет крутиться сервис, который подсасывает данные из сервера и кладет в БД. Ну а поскольку над БД у вас будет развернут ContentProvider то все изменения которые будет вносить сервис в БД будет автоматом отображаться на UI.
Для рисования списков в последнее время модным стало использование RecyclerView, он лучше себя ведет в тяжелых списках с картинками, правда и кода он требует чуток больше чем ListView
Как то так.
Комментариев нет:
Отправить комментарий