我通过以下方式实现了一个可点击的表格:
TableLayout table = (TableLayout) findViewById(R.id.tableReportsList);
table.setStretchAllColumns(true);
table.setShrinkAllColumns(true);
final String tag = "tag";
for (Report tempReport : reportsRepository)
{
TableRow row = new TableRow(this);
TableLayout.LayoutParams tableRowParams=new TableLayout.LayoutParams(TableLayout.LayoutParams.WRAP_CONTENT,TableLayout.LayoutParams.WRAP_CONTENT);
tableRowParams.setMargins(0, 10, 0, 10);
row.setLayoutParams(tableRowParams);
row.setClickable(true);
TextView tvName = new TextView(this);
tvName.setBackgroundDrawable(getResources().getDrawable(R.drawable.table_row_shape));
tvName.setText(tempReport.getName());
tvName.setGravity(Gravity.CENTER_HORIZONTAL);
tvName.setTextColor(getResources().getColor(R.color.my_black));
tvName.setTag(tag);
row.addView(tvName);
TextView tvPath = new TextView(this);
tvPath.setBackgroundDrawable(getResources().getDrawable(R.drawable.table_row_shape));
tvPath.setText(tempReport.getPath());
tvPath.setGravity(Gravity.CENTER_HORIZONTAL);
tvPath.setTextColor(getResources().getColor(R.color.my_black));
row.addView(tvPath);
map.put(tempReport.getName(), tempReport);
row.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
TextView tvName = (TextView) v.findViewWithTag(tag);
Log.d(TAG, "looking for report with name: " + tvName.getText());
Report report = (Report)map.get(tvName.getText());
Log.d(TAG, "The report found: " + report.toString());
Map<String, String> valuesmap = new HashMap<String, String>();
valuesmap.put(GetParametersAsyncTask.REPORTID_PARAM, report.getId());
Log.d(TAG, "passed the following id to the asynctask: "+ report.getId());
GetParametersAsyncTask asyncTask = new GetParametersAsyncTask(ReportsTableActivity.this, ((SGRaportManagerAppObj)getApplication()).getCurrentUrl());
asyncTask.execute(valuesmap);
}
});
table.addView(row);
}
而 xml 文件看起来像这样:
<FrameLayout>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="55dp" >
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tableReportsList"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:shrinkColumns="*"
android:stretchColumns="*" >
<TableRow
android:layout_height="wrap_content"
android:background="@color/light_gray"
android:textStyle="bold" >
<TextView
android:id="@+id/nameLabel"
android:layout_height="wrap_content"
android:background="@drawable/table_row_shape"
android:gravity="center_horizontal"
android:text="@string/report_name"
android:textColor="@color/my_black"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:textStyle="bold" />
<TextView
android:id="@+id/pathLabel"
android:layout_height="wrap_content"
android:background="@drawable/table_row_shape"
android:gravity="center_horizontal"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:text="@string/report_path"
android:textColor="@color/my_black"
android:textStyle="bold" />
</TableRow>
</TableLayout>
</ScrollView>
看看你是否觉得它有帮助。