【发布时间】:2016-01-16 04:45:16
【问题描述】:
我有水平方向的线性布局,其中几乎没有 ImageViews(在 xml 中硬编码)。我必须根据 MultiselectListPreference 对它们进行排序(所有先选中,然后再取消选中)。把选中的放在开头我试过了
((LinearLayout)imageView.getParent()).removeView(imageView);
((LinearLayout)imageView.getParent()).addView(imageView,0);
并且没有做任何未经检查的事情。但它给了我“指定的孩子已经存在。你必须在视图的给定父级上调用 removeView(view)”虽然我已经调用了它。这可能是因为所有这些 ImageView 都存在于 xml 中。如何获得所需的子 ImageView 排列。如果LinearLayout根本不够用,我这里应该用RecyclerView,会不会比较重?
【问题讨论】:
-
我绝对认为,每当您谈论重新排序视图时,最好使用某种类型的 RecyclerView 或 ListView。它们是为此类工作而设计的,不会产生多次重新布局的巨大成本。
-
如果您刚刚从父视图中删除
imageView,我对imageView.getParent()的工作方式感到困惑...... -
@GabeSechan 从今以后我会详细介绍 Recycler。
-
@cricket_007 - 即使我很困惑,但这是我找到的排序解决方案。可能是因为尽管视图已从父级中删除,但对象“imageView”仍将其父级的信息保存在其“父级”字段中。
标签: android android-linearlayout