Android 在两个适配器中共享相同的视图
我想知道这在Android中是否可行。我正在使用支持库v4。 我遇到的问题是,我必须使用两个适配器在两个活动中显示相同的自定义视图,一个适配器支持视图寻呼机,另一个适配器支持网格。基本上,有一个包含图像的网格,您可以查看这些图像,当您单击元素时,它应该会打开另一个活动,您可以在查看页面中查看相同的图像。我尝试在fragment onCreateView方法中返回相同的视图,但get-child已经有了一个我期望的父视图,在首先使用Android 在两个适配器中共享相同的视图,android,android-adapter,Android,Android Adapter,我想知道这在Android中是否可行。我正在使用支持库v4。 我遇到的问题是,我必须使用两个适配器在两个活动中显示相同的自定义视图,一个适配器支持视图寻呼机,另一个适配器支持网格。基本上,有一个包含图像的网格,您可以查看这些图像,当您单击元素时,它应该会打开另一个活动,您可以在查看页面中查看相同的图像。我尝试在fragment onCreateView方法中返回相同的视图,但get-child已经有了一个我期望的父视图,在首先使用 ((ViewGroup) myImageView.getPare
((ViewGroup) myImageView.getParent()).removeView(myImageView);
我得到java.lang.UnsupportedOperationException:AdapterView异常中不支持removeView(视图),这是我预料不到的。我知道我被卡住了,因为我不想创建新视图,而是使用两个适配器中的现有视图。
我的问题是:
是否可以显示相同的视图,或者我完全走错了方向,应该以其他方式实现这个“适配器链接”
这是不是也可以表达同样的观点,还是我完全错了
跟踪并以其他方式实现此“适配器链接”
没有办法在两个活动之间共享视图,而且您也不想这样做。即使使用带有片段的单个活动,也不应该共享适配器的视图,因为这可能会导致更多问题
正确的方法是在需要相同数据的两个地方重新创建数据,如果使用适配器,这应该很容易。在用于GridView
的普通适配器中,基本上需要对ViewPager
的页面使用相同的布局
我得到java.lang.UnsupportedOperationException:removeView(视图)不是
在AdapterView异常中受支持,这是我没有预料到的
AdapterView
的子级通过适配器管理其子级,而addView()
或removeView()
等方法不适用于它们。感谢您的回答。这确实为我指明了正确的方向,我现在就要测试它。请您更详细地说明“正确的方法是在两个地方重新创建数据,您需要相同的数据,如果您使用适配器,这应该很容易。您基本上需要在用于GridView的普通适配器中为ViewPager的页面使用相同的布局。”这里的问题可能是我的自定义对象同时包含其数据和视图,例如类具有字符串imageUrl和ImageView FullImage。@PSIXO您的自定义对象不应包含ImageView
,因为它不表示模型。您应该使模型类仅包含数据,并将ImageView
留给适配器进行构建。然后,正如我已经说过的,在适配器中为ViewPager
使用相同的布局,为GridView
使用相同的布局。我尝试了很多方法,但最终实现了与您建议的类似的功能,因此感谢您的帮助。AdapterView的子级也通过适配器管理其子级,并且没有为它们实现addView()或removeView()等方法。这对我来说是一个至关重要的信息,因为我不知道。对于这些,你得到了正确的答案。我只是不理解关于“在ViewPager和GridView的适配器中使用相同的布局”的部分,因此,如果您能给我提供更多关于这方面的信息,我会很有帮助。另外,如何链接适配器中的位置?@PSIXO您不明白什么?您知道如何为ViewPager
和GridView
构建适配器吗?如果使用相同的数据列表,则位置已经链接。我对“相同布局”的词有点困惑,但现在知道您指的是实例化或膨胀相同的视图类型,所以我一直在这样做。我仍然不知道在使用相同的列表时它们是如何链接的,因为每个适配器都有自己的getItem(position),并且位置不一样。我当前正在将网格中选定的元素位置传递给第二个活动,并在“查看页面”中选择该元素,但如何以其他方式执行:从“其他活动”的“查看页面”更改网格中的当前元素?