在布局中添加多个视图时出现问题

时间:2013-05-24 06:27:54

标签: android layout

我正在尝试添加相同布局的多个视图。但是,在执行以下代码时,我收到异常:java.lang.IllegalStateException:指定的子代已经有父代。您必须首先在孩子的父母身上调用removeView()。

我做错了什么?谢谢!

class GetTrackTimer extends TimerTask {

            Activity act;
            View RootView;
            public GetTrackTimer(Activity ctx, View RootView)
            {
                this.act = ctx;
                this.RootView = RootView;
            }

            @Override
            public void run() {

                act.runOnUiThread(new Runnable() {

                    @Override
                    public void run() {


                        if (TrackItems.getInstance().items == null)
                            return;

                        LinearLayout items = (LinearLayout) RootView.findViewById(R.id.itemslist);
                        LayoutInflater inflater = (LayoutInflater) act.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                        for (int i = 0; i < TrackItems.getInstance().items.length; i++)
                        {

                            View  itemView = inflater.inflate(R.layout.track_item,null);
                            TextView tv=  (TextView)itemView.findViewById(R.id.itemName);
                            tv.setText(TrackItems.getInstance().items[i].Item.ID + "");

                            items.addView(tv);
                        }
                    }
                });
            }
        }

2 个答案:

答案 0 :(得分:2)

您的TextView电视已经是夸大的itemView的子节点,因此您无法将其作为子节点添加到另一个视图中。

尝试使用items.addView(itemView);代替items.addView(tv);

答案 1 :(得分:1)

那是因为单个子元素不能有多个父布局..

在这里,items.addView(tv);多次添加tv,因此出现错误..