表格中添加的行未显示出来

3
这个问题之前已经被提出过,但我还没有找到适合我的解决方案:
当从代码中添加行到表格时,这些行在应用程序中并没有显示出来。我在XML中指定了一行,它显示出来了,但是它下面的所有内容都没有显示。
这是代码,我也添加了我的类的构造函数:
private LayoutInflater theInflater;
private LinkedList<View> rows;
private Context thisContext;

public DistanceTableView(LayoutInflater vi, Context context)
{
  theInflater = vi;
  rows = new LinkedList<View>();
  thisContext = context;    
}

public void addRow(LocationMessage locationMsg){
  View messageView = theInflater.inflate(R.layout.homepage, null);
  TableLayout table = (TableLayout)messageView.findViewById(R.id.distanceTable);

  TextView senderNameTextView = new TextView(thisContext);
  senderNameTextView.setText(locationMsg.getSenderName());

  TableRow tr = new TableRow(thisContext);
  tr.addView(distanceTextView);
  table.addView(tr);
  rows.addFirst(messageView);
}

homepage.xml 包含以下内容,我删除了一些元素和参数:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout>
    <TabHost>
    <TabWidget />
        <FrameLayout>
        [..]        
            <LinearLayout>          
            [..]
                <TableLayout
                android:id="@+id/distanceTable" 
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:layout_gravity="center"
                android:background="#DDDDDD"
                android:stretchColumns="1" >
                    <TableRow>
                        <TextView
                        android:textColor="#000000"
                        android:text="@string/label_device"
                        android:layout_gravity="center"
                        android:padding="3dip"
                        android:textSize="18sp" />
                        <TextView
                        android:textColor="#000000"
                        android:text="@string/label_distance"
                        android:layout_gravity="center"
                        android:padding="3dip"
                        android:textSize="18sp" />
                        <TextView
                        android:textColor="#000000"
                        android:text="@string/label_time"
                        android:layout_gravity="center"
                        android:padding="3dip"
                        android:textSize="18sp" />
                    </TableRow>
                </TableLayout>
            </LinearLayout>
        </FrameLayout>
    </TabHost>
</LinearLayout>

很遗憾,层级查看器.bat对我来说无法使用,以检查行是否存在但只是不可见。在调试器中,它看起来很好。


你的 addRow() 方法在 Activity 中吗?rows 是什么 - 它是如何初始化的,addFirst() 是做什么的?thisContext 是如何初始化的? - dave.c
我已经扩展了我上面问题中的代码部分。rows是视图的LinkedList。我已经添加了初始化内容的构造函数。 addRow()是一个类中的方法,该类继承了另一个类,后者又继承了一个MapActivity - Lars
1个回答

0
我认为在添加新行后,您应该调用TableLayout.requestLayout()。
docs中可以看到:

当某些内容更改时,会使此视图的布局无效。调用此方法将安排对视图树进行布局。


很遗憾,那并没有帮助到。 - Lars

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接