将标签和侦听器添加到多次膨胀的 XML 的视图中
Posted
技术标签:
【中文标题】将标签和侦听器添加到多次膨胀的 XML 的视图中【英文标题】:Adding tags and listeners to the views of a multiple times inflated XML 【发布时间】:2013-09-12 00:13:11 【问题描述】:我实际上正在开发一个需要多次扩展相同 XML 布局的 android 应用程序。
这个布局包含 2 个按钮、一些 textView 和一个我稍后需要更新的进度条。我想为按钮添加 onClick 侦听器,并为所有这些元素设置带有setTag()
的自定义标签,这样我就能够知道哪个按钮被点击并修改正确的 textView(或progressBar)。
我用这段代码扩充了 XML:
LinearLayout countersList = (LinearLayout)findViewById(R.id.countersLayout);
View child = getLayoutInflater().inflate(R.layout.counter, null);
countersList.addView(child);
如何访问正确的视图来设置标签和添加监听器?有没有更好的方法来做我想做的事?
非常感谢!
【问题讨论】:
【参考方案1】:至于如何标记或添加 onClick 侦听器到您的视图:您可以向要标记的视图添加一个 ID,并使用 findViewById 找到它们。例如,
LinearLayout countersList = (LinearLayout)findViewById(R.id.countersLayout);
ViewGroup child = (ViewGroup) getLayoutInflater().inflate(R.layout.counter, null);
child.findViewById(R.id.myButton).setTag("myTagForTheButton");
countersList.addView(child);
关于第二个问题,我不确定您的 UI 是什么样的,但许多重复视图可能需要使用 ListView。
【讨论】:
【参考方案2】:设置标签和监听器没有问题
LinearLayout countersList = (LinearLayout)findViewById(R.id.countersLayout);
View child = getLayoutInflater().inflate(R.layout.counter, null);
child.setTag("YourString");
// Similarly
view.setOnClickListener(new OnClickListener()
@Override
public void onClick(View v)
);
countersList.addView(child);
如果你想要它的某些子节点,你也可以使用findViewById
【讨论】:
【参考方案3】:您可以使用 view.setTag(key, tag) 到许多标签。 前任: view.setTag("right_view", rightView);
【讨论】:
以上是关于将标签和侦听器添加到多次膨胀的 XML 的视图中的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法区分 TextViews 或具有相同 ID 多次从单个 xml 文件膨胀的任何其他视图
我可以在不膨胀/重新膨胀布局的情况下将视图添加到滚动视图吗?