2011-01-31 39 views
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> 

不幸的是hierarchyviewer .bat不適用於我,以檢查行是否存在,但不可見。在調試器中,它對我來說看起來很好。

+0

是你的`Activity`中的`addRow()`方法嗎?什麼是「行」 - 它是如何初始化的以及addFirst()是做什麼的? `thisContext`如何初始化? – 2011-01-31 16:16:36

+0

我在上面的問題中擴展了代碼部分。 `rows`是Views的LinkedList。我已經添加了構造函數初始化的東西。 `addRow()`在一個擴展了`MapActivity`的類中。 – Lars 2011-02-01 10:05:00

回答

0

我想你應該在添加新行後調用TableLayout.requestLayout()。

docs

調用此當事情已經改變 已失效的 這種觀點的佈局。這將安排視圖樹的佈局 傳遞。