2013-05-30 2 views
0

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

((ViewGroup) myImageView.getParent()).removeView(myImageView); 

я java.lang.UnsupportedOperationException: removeView (View) не поддерживается Исключение AdapterView, которого я не ожидал. Знаю, что я застрял, потому что я не хочу создавать новые представления, но использовать существующие в обоих адаптерах. Мой вопрос: Может ли это показать такой же вид, или я на совершенно неправильном пути, и должен реализовать эту «переходную ссылку» каким-то другим способом?

ответ

1

Может ли это показать такой же вид или я нахожусь на совершенно неправильном пути и должен реализовать эту «переходную ссылку» каким-то другим способом?

Невозможно обменяться мнениями между двумя действиями, и вы все равно не захотите этого делать. Даже если вы использовали одно действие с фрагментами, вы не должны обмениваться видами адаптера, так как это может привести к большим проблемам.

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

я java.lang.UnsupportedOperationException: removeView (View) не поддерживается в AdapterView исключения, которое я не ожидается, произойдет.

Ребенок AdapterView управляет своими детьми через адаптер и методы, такие как addView() или removeView() не выполняются для них.

+0

Благодарим вас за ответ. Это указывает на меня в правильном направлении, и я собираюсь проверить это прямо сейчас. Не могли бы вы просто уточнить: «Правильный способ сделать то, что вы хотите, - это воссоздать данные в двух местах, где вам нужны одни и те же данные, и это должно быть легко, если вы используете адаптер. Вам в основном нужно будет использовать такой же макет для страниц ViewPager в обычном адаптере, используемом для GridView ». Проблема здесь в том, что мои пользовательские объекты содержат как их данные, так и представление, например, класс имеет String imageUrl и ImageView FullImage. – PSIXO

+0

@PSIXO Ваш пользовательский объект ** не должен содержать ** ImageView, поскольку он не представляет модель. Вы должны сделать класс модели содержащим только данные и оставить «ImageView» адаптеру для сборки. Затем, как я уже сказал, используйте тот же макет в адаптере для «ViewPager» и адаптера для «GridView». – Luksprog

+0

Я пробовал много вещей, но, в конце концов, реализовал нечто похожее на то, что вы предложили, так что спасибо за вашу помощь. Кроме того, дочерний элемент AdapterView управляет своими дочерними элементами через адаптер, и для них не реализованы такие методы, как addView() или removeView(). для меня важная информация, так как я этого не знал. Для этого вы получите правильный ответ. Я просто не понимаю, что касается «использования того же макета в адаптере для ViewPager и адаптера для GridView», поэтому, если бы вы могли просто дать мне дополнительную информацию об этом, было бы полезно. Также, как вы связываете позиции в адаптерах? – PSIXO

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