2016-09-29 6 views
0

Я разрабатываю приложение для Android, подобное приложению Android android. На экране временной шкалы у меня есть список сообщений, пользователю может понравиться или прокомментировать любое сообщение. Когда пользователь нравится сообщение, чтобы выделить понравившуюся кнопку, я взял объект из массива, изменил его любимый статус и уведомил адаптер так, чтобы кнопка была подсвечена.
Если пользователь нажмет кнопку «Отправить», откроется экран подробных сведений. Подробно экранный пользователь также имеет возможность понравиться сообщению. Теперь моя проблема в том, что если пользователь, как сообщение с экрана подробностей, и вернулся, он должен быть в том же положении в списке и как кнопка сообщения на этой позиции должна быть выделена. Я попытался сделать это, начав подробные действия с помощью метода StartActivityForResult() и передав выбранный объект. В методе onActivityResult() я возвращаю измененный объект из детали Activity. Я заменил исходный объект post на измененный объект в массиве и уведомил адаптер. Я не уверен в своей логике, что она хорошая или нет. Мне нужно лучшее решение для этого. Я буду очень благодарен за любое хорошее предложение.Обновление Listview

+0

Почему вы не изменяете объект более постоянно? –

+0

Не могли бы вы разместить свой адаптер? – Jai

+0

Постоянно? У меня также есть другой вариант, который появляется, когда я возвращаюсь к экрану списка сообщений. Я вызываю API для загрузки сообщений снова. но я не хочу снова называть сообщения api при возвращении. То почему я хочу иметь изменение локально –

ответ

0

Да. onActivityResult() - хорошая реализация для взаимодействия активности с деятельностью.

0

Ваша логика не ошибается.

Но если вы хотите, чтобы это было просто, вы можете попробовать некоторые библиотеки третьей части, такие как EventBus, это может помочь вам легко доставить сообщение между компонентами, такими как действия.

В вашем случае полезно использовать StickyEvent.

1

onActivityResult() будет правильным ответом, но вы не закончите свою деятельность, а вместо этого нажмете кнопку «Назад/домой». Поэтому в этом случае информация о родительской активности не передается.

Решение, которое приходит мне на ум, изменяет ваши объекты более постоянными через sharedPreferences или некоторые ORM. Но может быть неприятно собирать данные из памяти в каждом движении вашего приложения.

То, что я предлагаю, превращает вашу детальАктивность в фрагмент детали. Было бы проще передать информацию родительской деятельности. В этом случае активность, которая имеет полный список, запустит фрагмент, передающий один элемент, который был нажат. После этого вы должны реализовать интерфейс для общения с родительской активностью, и в этом случае основной список будет всегда корректно обновляться.

Этот метод требует очень долгого объяснения, на самом деле слишком много. Я бы указал на основные шаги, чтобы дать отправную точку для исследования.

  1. Create a fragment похожее на вашу detailActivity. Для связи с этой деятельностью требуется декларация надлежащего interface.
  2. Сделайте свою деятельность для реализации интерфейса и переопределите его определение. Эта функция будет обрабатывать как нажатие кнопки. Вот здесь, где вам нужно обновить основной массив.
  3. Change один основной фрагмент с фрагментом детали при щелчке по элементу.

Я надеюсь, что это поможет вам найти окончательное решение для вашего кода.

PD: Я нашел this URL-адрес, который может содержать весь процесс, просто очень подробно.

Смежные вопросы