0

我有一个包含 TableLayout 的活动。我正在通过列表中的数据以编程方式填充此表:

我需要做的是让每一行都可点击,当它被点击时,我需要在列表中找到相应的项目,这样我就可以从中获取额外的数据,这是我的onCreate代码:

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);  

    for (Report tempReport : reportsRepository)
    {
        TableRow row = new TableRow(this);
        row.setClickable(true);
        TextView tvName = new TextView(this);
        tvName.setText(tempReport.getName());
        tvName.setGravity(Gravity.CENTER_HORIZONTAL);
        tvName.setTextColor(getResources().getColor(R.color.my_black));  
        row.addView(tvName);
        TextView tvPath = new TextView(this);
        tvPath.setText(tempReport.getPath());
        tvPath.setGravity(Gravity.CENTER_HORIZONTAL);
        tvPath.setTextColor(getResources().getColor(R.color.my_black));
        row.addView(tvPath);
        row.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) 
            {
                Map<String, String> map = new HashMap<String, String>();
                map.put(Report.JSON_KEY_ID, );
            }
        });
        table.addView(row);   
    }
}

所以我在这里需要的是,当单击该行时,我需要在列表中找到它并获取在表中单击的报告的 ID 并放入 Map 对象以传递前言。有谁知道这是怎么做到的?

谢谢。

4

1 回答 1

1

使用哈希表映射您在表格行中显示的内容(例如报告 ID)与报告对象

所以像

Hashtable map = new Hashtable();
...
map.put(report.getId(), report);

onClick 表行,设法获取报告 ID,然后查找您在类级别或可访问的地方维护的这个哈希表..

编辑(代码块)

class MyTableRow extends TableRow{

    Object report = null;
    public MyTableRow(Context context) {
        super(context);
    }

    public Object getReport() {
        return report;
    }

    public void setReport(Object report) {
        this.report = report;
    }   
}

在您的活动的 onCreate() 中,只需使用 MyTableRow 类而不是 TableRow 像 tableRow = new MyTableRow(this) 并使用 tableRow.setMethod(reportObject) 来设置报告。应该管用..

于 2013-03-05T10:54:04.410 回答