2015-08-17 5 views
-1

Мое понимание заключается в том, что лучшие практики для простого приложения со списком и деталями Деятельность будет startActivityForResult(). Предположим, у меня есть приложение с model Product (id, name, price) и ProductListActivity и ProductDetailActivity.Пример кода для списка/подробностей Android Деятельность

Мне сложно понять, какая из этих мероприятий будет содержать startActivityForResult() и которая будет иметь setResult() и каков будет результат.

ответ

1

Мое понимание заключается в том, что лучшие практики для простого приложения со списком и деталями> Деятельность будет startActivityForResult().

Я бы не согласился с этим утверждением.

На мой взгляд, наилучшим способом было бы установить [onListItemClickListener] (http://developer.android.com/reference/android/app/ListActivity.html#onListItemClick(android.widget.ListView, android.view.View, int, long)) в вашей ProductListActivity.

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

Как только вы выясните, какой предмет был нажат, вы создадите Intent и разместите там необходимые предметы (например, положение щелкнутого элемента). Затем вы будете использовать это намерение для запуска ProductDetailActivity, вызвав startActivity().

Затем в вашей ProductDetailActivity вы получите это намерение с помощью getIntent(), извлеките дополнительные функции из этого намерения, а затем используйте их, чтобы решить, что показывать в вашей деятельности (например, отобразить некоторый текст, связанный с позицией в ваш список из ProductListActivity). Вы можете получить дополнительные функции с помощью методов getExtra *().

Вы должны использовать startActivityForResult(), если хотите получить какой-то результат от этого действия, что в вашем примере, похоже, не так, вы просто хотите отобразить некоторые детали. Теперь представьте, что ваша деятельность сделала некоторые вычисления, и вы хотели получить окончательное значение обратно, а использование startActivityForResult() было бы одним из способов передачи этого значения обратно.

+0

спасибо за отличное объяснение! Делает совершенный смысл. Кроме того, в моем случае я предпочел бы использовать позицию Id (long id) вместо позиции. Я приму свой ответ! – liminal

+0

P.S. Я не могу поддержать ваш ответ, так как я не заработал репутацию с 15 очками – liminal

+0

Добро пожаловать, рад, что я мог бы помочь. Да, эта же логика применяется и к параметру id. –

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