Мне было поручено переделать целое приложение в основном на работе.По сути, приложение представляет собой просто ленту, которая содержит несколько типов карт (например, Facebook с картами обновлений, фотокартами, картами контента OG) и т. Д. Я переместил все операции с сетью в один класс.Вы вызываете метод, который содержит требуемый запрос, передавая относительные параметры и Listener.Сетевой вызов выполняется, а затем слушателю передается ответ.
В настоящее время у меня есть класс Fragment, который заполняет представление recycler моим пользовательским адаптером.Класс Fragment взаимодействует с моим сетевым классом, отправляя запросы на нумерацию оконечных точек.Должен ли я иметь прослушиватель адаптера, который связывается с моим фрагментом, например, когда щелкает значок «Мне нравится» на определенной карте viewHolder?Должен ли я сделать так, чтобы фрагмент создал и управлял этим сетевым вызовом?Проблема, которую я должен здесь объяснить, заключается в том, что в случае сбоя сетевого ответа мне нужно сбросить элементы пользовательского интерфейса (например, цвет значка), чтобы уведомить пользователя о том, что его запрос не может быть выполнен в данный момент.Отключение этих элементов - это свойства держателя вида в этой позиции в представлении переработчика.Кажется неправильным передавать всю эту информацию о владельце вида обратно фрагменту, чтобы фрагмент был единственным классом, взаимодействующим с моим сетевым классом.Есть ли что-то не так с тем, что мой адаптер также обрабатывает сетевые запросы.
Например, установите onClickListener на элементе моего держателя вида, при нажатии обновите пользовательский интерфейс и сделайте вызов, а затем ответьте на адаптер.В случае успеха оставьте все как есть, в случае неудачи сбросьте интерфейс.Этот шаблон имеет смысл для меня и отделяет индивидуальную логику представления от фрагмента.Это нормально делать?Многие поиски в Google заставили меня поверить в обратное.Это мое первое бизнес-приложение, и я хочу убедиться, что я следую наилучшим возможным шаблонам.
Мой фрагмент для записи выглядит примерно так
onCreate() {
networkListener = new NetworkResponseListener() {
//Process success response based on response code
onSuccess(JSONObject response, responseCode)
onError(Error e, responseCode) // Handle Errors
}
}
//After scroll listener indicates I need to fetch again
NetworkHelper.makeFeedFetch(networkListener, LastId, GET_FEED_REQUEST_CODE);
Так что, по сути, я бы делал такой же тип сетевого взаимодействия в своем классе адаптера для таких действий, как нажатие на иконку viewHolder и т. Д.,Это приемлемо?