【发布时间】:2013-03-11 21:44:24
【问题描述】:
我编写了一个旨在显示报告的应用程序。应用程序的第一个屏幕是显示报告信息(名称、路径)的表格。
所以我想让表格的行可点击,以便将我带到显示报告详细信息的下一个屏幕,并了解该行对应的报告是什么。所以我自己写了一行:
TableReportRow:
public class TableReportRow extends TableRow {
Report report;
public TableReportRow(Context context, Report report) {
super(context);
this.report = report;
}
public Report getReport() {
return report;
}
public void setReport(Report report) {
this.report = report;
}
}
然后我以编程方式创建了表格:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.reports_list_activity_layout);
application = (SGRaportManagerAppObj)getApplication();
reportsRepository = application.reportsRepository.getReportsRepository();
TableLayout table = (TableLayout) findViewById(R.id.tableReportsList);
table.setStretchAllColumns(true);
table.setShrinkAllColumns(true);
final String tag = "tag";
for (int i= 0; i < reportsRepository.size(); i++) {
Report tempReport = reportsRepository.get(i);
TableReportRow row = new TableReportRow(this, tempReport);
// ...
row.addView(tvName);
row.addView(tvPath);
row.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// This is where I need help.
}
});
table.addView(row);
}
现在我需要对onClick() 中的视图执行强制转换以访问GetReport() 方法以获取该行的实际相应报告,但我似乎无法正确处理。有人可以帮我解决这个问题吗?任何帮助将不胜感激。
【问题讨论】:
-
我猜是 Report result = ((TableReportRow)v).getReport(); - 还是太明显了?
-
出于某种原因,eclipse 会在清理之前给我错误,但你是对的,我的错。
标签: android casting onclick row android-tablelayout