2012-05-02 3 views
0

Я новичок в Android и Java. Я создаю приложение, которое позволяет пользователям нажимать кнопку, которая запускает выбор изображения, где они могут выбирать из изображений на SD-карте. Приложение загружается сеткой с 2 ​​ячейками. Одна ячейка имеет изображение, которое имеет изображение по умолчанию. Другая кнопка. Как только изображение будет выбрано, изображение должно отображаться в представлении изображения вида сетки.Изменить изображениеПросмотреть содержимое в GridView в Android

Я использую строковый путь, который декодируется из изображений uri для создания растрового изображения. Затем я вызываю imageView.setImageBitmap (bitmap). Это ничего не делает. Я попытался обновить ресурс изображения с другим изображением в папках с возможностью рисования и все равно ничего. Я добавил отдельный просмотр изображения только под сеткой в ​​своей деятельности, и это изображение обновляется отлично, что заставляет меня думать, что это связано с представлением сетки (это мой первый вид сетки).

Любая помощь очень ценится.

спасибо.

ответ

2

GridView Возможно, это не правильный выбор, если у вас есть только две ячейки. Вероятно, вам будет проще с простым LinearLayout, у которого есть два предмета, с которыми вы имеете дело.

Но, вот как вы это делаете с GridView:

Создание адаптера путем расширения BaseAdapter. Самый важный метод - getView(), но именно там вы должны выполнять наименьшее количество работы.

Когда GridView перейдет к перерисованию, он будет проходить для каждой видимой позиции и вызовет getView() для каждого из них. Вам будет предоставлен номер View. Если вид null, раздуйте новый из ваших ресурсов XML, заполните его и верните. Если представление НЕ null, заполните существующее с соответствующими данными. Виджет эффективен, пересматривая виды.

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

Это двухминутная версия. В Google I/O год или два назад они разговаривали по телефону The World of ListView и размещали его на YouTube. Это был хороший разговор и почти все, что касается GridView.

+0

Благодарим вас за подробное объяснение. Это очень помогает. Я подозревал, что Grid View не лучший выбор, но я предпочел, чтобы он отдал мне практику. Поэтому, если я правильно понимаю, представление Grid не будет перерисовываться до тех пор, пока я не вызову notifyDataSetChanged(), даже если я могу ссылаться на отдельный вид изображения и вызвать setImageBitmap()? – Nightmare6m

+0

При использовании 'ListView' или' GridView' вы должны * никогда * не пытаться манипулировать представлениями ячеек вне вызова 'getView()', поскольку экземпляры перерабатываются для разных данных, когда пользователь прокручивает список. Если вы попробуете это, вы получите очень странное поведение, вплоть до и несовпадающих данных, появляющихся в неожиданных ячейках. – Argyle

+0

Awesome. У меня есть работа. И в конце будет использовать представление списка. Но неплохо также понять, что Grid View лучше. Большое спасибо. – Nightmare6m

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