0

我希望我得到这个时间回答我的问题有相同ID的膨胀多次TextViews或任何其他视图之间的区别,我已经张贴在这个问题,但我想人所忽视它,因为它没有把正确的,这里是我刚才的问题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其中包含一个TableLayout 3个LinearLayouts这又包含TextView的在我的按钮单击事件的主要活动的链接,用户可以添加尽可能多的他想要的意见。有没有办法从一个XML文件

但我很困惑,如何收集这些textviews或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); 
    } 

但我能setOnClick监听器仅在第TextView的,其余都被忽略。

这里是另一个链接,说明我如何吹我的活动和类似的情况,但得到的信息不事先说明有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) { 
      // ... 
     } 
    }); 
} 
+0

如果我这样做,然后我就可以编辑TextViews一次,如果我试图回来到特定的TextView和尝试的setText就可以了,然后在文本设置在LinearLayout中的最后一个TextView的?我现在应该做什么的猜测? – 2011-12-17 15:04:09

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

      } 
    }