我有一个 GridLayout 用于在 ListView Activity 中显示玩家数据(将来我可能会更改为真正的 ListView,但出于这个问题的目的,认为必须成为 GridLayout)。
在 Activity 结果中,我必须向布局添加新行,并且由于所有行都具有相同的组件,所以我将所有行组件放入一个具有合并父级的新布局文件中,当需要添加行时,只需使用GridLayout 作为 rootView 并附加到 true。
问题是当我添加一个新行时,因为组件 ID 相同,我总是更改第一行的属性(TextView 的文本)。
如何访问具有相同 ID 的其他 View ?
最佳答案
我搜索了很多次,唯一发现的是You can't do it。
所以我必须得到替代方案,例如:
- 然后直接在代码中添加。所以你弄乱了代码和 UI。
- 更改
<merge>
元素到其他。所以效率很低。 - 使用索引而不是 ID 获取 View 。同样,您会混淆代码和 UI,但比第一个选项要少一些。
在我的例子中,我使用了索引让我的代码如下:
inflater.inflate(R.layout.player_in_match, llPlayers, true);
// 4 Is because I have 4 elements in the R.layout.player_in_match
// and I wanna get the first of them.
TextView tvName = (TextView) llPlayers.getChildAt(llPlayers.getChildCount() - 4);
tvName.setText(name);
关于android - 在同一个 ViewGroup 中添加多个合并布局时如何访问 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23581536/