0

我希望这次我能得到我的问题的答案,我已经发布了一个问题,但我想人们忽略了它,因为它没有正确放置,这是我之前问题的链接如果我知道我的观点的 ID在按钮单击时在同一个父级中多次膨胀视图? 我正在膨胀 child.xml,其中包含一个带有 3 个 LinearLayouts 的 TableLayout,在我的主 Activity 中再次包含 TextView 的按钮单击事件,用户可以添加任意数量的视图。

但我对如何从这些文本视图或 setOnClickListeners 收集数据感到困惑,因为不同的视图共享 TextView 的相同 ID。

人们建议我在膨胀视图上使用 findViewById,方法是在膨胀视图上附加适当的类型并将引用存储在列表中,但我只能为膨胀的第一个视图设置 OnClickListener。

我想知道是否有可能实现我正在做的事情?在另一篇文章中,我读到 findViewById 找到了它可以找到的第一个可能的视图实例。这对我来说是个问题吗。

请看我的代码片段

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 侦听器,其余的都被忽略。

这是另一个链接,解释了我如何膨胀我的活动和类似的场景,但没有解释那里获取信息单击按钮时在同一个父级中多次膨胀视图

任何帮助都会得到回报,在此先感谢。

4

2 回答 2

1

由于这些TextViews已添加到父级ViewGroup(在您的情况下为 a LinearLayout),因此您可以遍历父级的子视图列表,并OnClickListener为每个视图添加一个:

for (int childPos = 0; childPos < myLayout.getChildCount(); childPos++) {
    myLayout.getChildAt(childPos).setOnClickListener(new OnClickListener() {
        @Override 
        public void onClick(View v) { 
            // ...
        }
    });
}
于 2011-12-14T19:25:18.703 回答
1

这可能会有所帮助

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(" ");

            }
    }
于 2014-01-10T06:14:25.200 回答