这个问题之前已经被提出过,但我还没有找到适合我的解决方案:
当从代码中添加行到表格时,这些行在应用程序中并没有显示出来。我在XML中指定了一行,它显示出来了,但是它下面的所有内容都没有显示。
这是代码,我也添加了我的类的构造函数:
当从代码中添加行到表格时,这些行在应用程序中并没有显示出来。我在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.crows
是视图的LinkedList
。我已经添加了初始化内容的构造函数。addRow()
是一个类中的方法,该类继承了另一个类,后者又继承了一个MapActivity
。 - Lars