Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在两个适配器中共享相同的视图_Android_Android Adapter - Fatal编程技术网

Android 在两个适配器中共享相同的视图

Android 在两个适配器中共享相同的视图,android,android-adapter,Android,Android Adapter,我想知道这在Android中是否可行。我正在使用支持库v4。 我遇到的问题是,我必须使用两个适配器在两个活动中显示相同的自定义视图,一个适配器支持视图寻呼机,另一个适配器支持网格。基本上,有一个包含图像的网格,您可以查看这些图像,当您单击元素时,它应该会打开另一个活动,您可以在查看页面中查看相同的图像。我尝试在fragment onCreateView方法中返回相同的视图,但get-child已经有了一个我期望的父视图,在首先使用 ((ViewGroup) myImageView.getPare

我想知道这在Android中是否可行。我正在使用支持库v4。 我遇到的问题是,我必须使用两个适配器在两个活动中显示相同的自定义视图,一个适配器支持视图寻呼机,另一个适配器支持网格。基本上,有一个包含图像的网格,您可以查看这些图像,当您单击元素时,它应该会打开另一个活动,您可以在查看页面中查看相同的图像。我尝试在fragment onCreateView方法中返回相同的视图,但get-child已经有了一个我期望的父视图,在首先使用

((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),并且位置不一样。我当前正在将网格中选定的元素位置传递给第二个活动,并在“查看页面”中选择该元素,但如何以其他方式执行:从“其他活动”的“查看页面”更改网格中的当前元素?