我实际上正在开发一个Android应用程序,它需要多次膨胀相同的XML布局。
此布局包含2个按钮,一些textView和一个progressBar,我稍后需要更新。我想在按钮上添加onClick监听器,并将setTag()
的自定义标签设置为所有这些元素,这样我就可以知道单击了哪个按钮并修改了正确的textView(或progressBar)。
我使用以下代码扩充XML:
LinearLayout countersList = (LinearLayout)findViewById(R.id.countersLayout);
View child = getLayoutInflater().inflate(R.layout.counter, null);
countersList.addView(child);
如何访问右侧视图以设置标记并添加侦听器?有没有更好的方法来做我想做的事情?
非常感谢!
答案 0 :(得分:0)
至于如何在视图中标记或添加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。
答案 1 :(得分:0)
设置标签和监听器没有问题
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
答案 2 :(得分:0)
您可以将view.setTag(key,tag)用于许多标签。 例如: view.setTag(“right_view”,rightView);