0

我实际上正在开发一个需要多次扩展相同 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);

如何访问正确的视图来设置标签和添加监听器?有没有更好的方法来做我想做的事?

非常感谢 !

4

3 回答 3

0

您可以使用 view.setTag(key, tag) 到许多标签。例如:view.setTag("right_view", rightView);

于 2013-09-12T02:13:59.637 回答
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

于 2013-09-12T00:49:28.363 回答
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。

于 2013-09-12T00:39:31.590 回答