有没有办法区分 TextViews 或具有相同 ID 多次从单个 xml 文件膨胀的任何其他视图
Posted
技术标签:
【中文标题】有没有办法区分 TextViews 或具有相同 ID 多次从单个 xml 文件膨胀的任何其他视图【英文标题】:Is there a way to distinguish between TextViews or any other Views having same ID's inflated multiple times from a single xml file 【发布时间】:2012-01-20 13:23:15 【问题描述】:我希望这次能得到我的问题的答案,我已经发布了一个问题,但我想人们忽略了它,因为它没有正确放置,这是我之前问题的链接How do I know the ID's of views if I am inflating a view multiple times in the same parent on button click? 我正在膨胀child.xml,其中包含一个带有3个LinearLayouts的TableLayout,在我的主Activity中再次包含TextView的按钮单击事件,用户可以添加任意数量的视图。
但我对如何从这些文本视图或 setOnClickListeners 收集数据感到困惑,因为不同的视图共享 TextView 的相同 ID。
人们建议我在膨胀视图上使用 findViewById,方法是在膨胀视图上附加适当的类型并将引用存储在列表中,但我只能为膨胀的第一个视图设置 OnClickListener。
我想知道是否有可能实现我正在做的事情?在另一篇文章中,我读到 findViewById 找到了它可以找到的第一个可能的视图实例。这对我来说是个问题吗。
请看一下我的代码sn-p
TextView[] tv=new TextView[l.size()];
for(int i=0;i<tv.length;i++)
tv[i]=(TextView)l.get(i).findViewById(R.id.mdsnew_type_sp);
tv[i].setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
showDialog(DATE_DIALOG_ID);
);
//I have also tried this
public void getData()
for(int i=0;i<l.size();i++)
tv1=(TextView)l.get(i).findViewById(R.id.mdsnew_type_sp);
但我只能为第一个 TextView 设置 OnClick 侦听器,其余的都被忽略。
这里是另一个链接,解释了我如何夸大我的活动和类似的场景,但那里没有解释获取信息Inflating a view multiple times in the same parent when a button is clicked
任何帮助都会得到回报,在此先感谢。
【问题讨论】:
【参考方案1】:由于这些TextViews
已添加到父ViewGroup
(在您的情况下为LinearLayout
),您可以遍历父视图的子视图列表,并为每个视图添加OnClickListener
:
for (int childPos = 0; childPos < myLayout.getChildCount(); childPos++)
myLayout.getChildAt(childPos).setOnClickListener(new OnClickListener()
@Override
public void onClick(View v)
// ...
);
【讨论】:
如果我这样做了,那么我可以只编辑一次 TextViews,如果我尝试回到特定的 textview 并尝试在其上设置文本,那么文本设置在 LinearLayout 的最后一个 TextView 上?猜猜我现在该怎么办?【参考方案2】:这可能会有所帮助
LanearLayout parentLayout = (LinearLayout)findViewById(R.id.main_ll);
int count = parentLayout.getChildCount();
for (int i = 0; i < count; i++)
View view = mainLl.getChildAt(i);
if (view instanceof TextView)
int id=view.getId();
((TextView) view).setText(" ");
【讨论】:
以上是关于有没有办法区分 TextViews 或具有相同 ID 多次从单个 xml 文件膨胀的任何其他视图的主要内容,如果未能解决你的问题,请参考以下文章