我有一个屏幕,在xml中定义了一个带有三个拉伸列的tablelayout。现在在我的代码中,我根据运行时获取的一些后端数据填充tablelayout中的表行。 现在我想创建一个动作,通过单击任何一个tablerow,通过展开表格行显示一些细节数据。再次单击tabelrow,数据应该折叠。 我尝试过使用下面的代码,但是它不起作用,我没有在点击后显示/展开的tablerow详细信息数据。任何帮助将不胜感激。
下面的main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.bfp.quiztemplate.ScoresActivity" >
<ScrollView
android:id="@+id/scrollView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/button1"
android:layout_below="@+id/quizSpinner" >
<TableLayout
android:id="@+id/displayScoresTable"
android:layout_width="fill_parent"
android:stretchColumns="0,1,2"
android:layout_weight="1"
android:layout_height="wrap_content">
</TableLayout>
</ScrollView>
我的活动课程
TableLayout tl = (TableLayout) findViewById(R.id.displayScoresTable);
for (int i = 0; i<dataArray.length; i++){
TableRow tr = new TableRow(this);
tr.setBackgroundResource(R.drawable.cell_shape_scores);
tr.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT));
//add more view elelemtns inside tablerow
TextView myText = new TextView(this);
myText.setText ("test");
LayoutParams textViewLayoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
myText .setLayoutParams(textViewLayoutParams);
tr.addView(myText );
//now the code for expand/collpase logic
tr.setTag(rowCount);
tr.setId(rowCount);
tr.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
rowCount = (Integer) v.getTag();
TextView tv1 = new TextView(ScoresActivity.this);
TextView tv2=new TextView(ScoresActivity.this);
TableRow.LayoutParams trparams = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT);
tv1.setLayoutParams(trparams);
tv2.setLayoutParams(trparams);
tv1.setText("Hello1!");
tv2.setText("Hello2!");
TableRow trow = new TableRow(ScoresActivity.this);
trow.setLayoutParams(trparams);
trow.addView(tv1);
trow.addView(tv2);
TableRow currentRow = (TableRow)findViewById(rowCount);
currentRow .addView(trow);
}});
tl.addView(tr, new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT));
}
答案 0 :(得分:0)
我最终能够通过使用tablelayout的addview(tablerow,index)属性来解决。为了扩展我必须在tat位置添加这么多行并将它们移除以便折叠。