将标记和侦听器添加到多次膨胀的XML的视图中

时间:2013-09-12 00:13:11

标签: android xml view onclick inflate

我实际上正在开发一个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);

如何访问右侧视图以设置标记并添加侦听器?有没有更好的方法来做我想做的事情?

非常感谢!

3 个答案:

答案 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);