添加到表格的行未显示

Posted

技术标签:

【中文标题】添加到表格的行未显示【英文标题】:Rows added to table are not showing up 【发布时间】:2011-06-18 15:57:38 【问题描述】:

以前有人问过这个问题,但我还没有找到适合我的解决方案:

从代码向表中添加行时,这些行不会显示在应用程序中。我在 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_
                android:layout_
                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>

不幸的是,hierarchyviewer.bat 不适用于我检查行是否存在但不可见。在调试器中,我觉得它很好。

【问题讨论】:

您的addRow() 方法在您的Activity 中吗?什么是rows - 它是如何初始化的,addFirst() 有什么作用? thisContext 是如何初始化的? 我在上面的问题中扩展了代码部分。 rows 是视图的 LinkedList。我添加了初始化这些东西的构造函数。 addRow() 位于一个扩展另一个类的类中,该类扩展了 MapActivity 【参考方案1】:

我认为您应该在添加新行后调用 TableLayout.requestLayout()。

来自docs:

当事情发生变化时调用它 这使布局无效 这种观点。这将安排布局 视图树的传递。

【讨论】:

很遗憾,这没有帮助。

以上是关于添加到表格的行未显示的主要内容,如果未能解决你的问题,请参考以下文章

带有链接的 HTML 表格行未选中复选框 [重复]

列表视图中的行未显示

popover中选择的行应该添加到uitablewview吗?

计算具有相同 ID 的行并显示在表格上

单击表格视图时如何显示选定的行?

用jquery怎么检索表格里的内容与文本输入框的里内容是不是相等,相等的话数据所在的行变颜色显示