我有一个简单的表格布局,我想通过在我的 onCreate 方法中初始化特定类型的对象来填充它。首先这是我的布局
工作表.xml
<?xml version="1.0" encoding="utf-8"?>
<TableLayout android:id="@+id/Jobs"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:stretchColumns="*"
             xmlns:android="http://schemas.android.com/apk/res/android">
    <TableRow android:id="@+id/JobRow" android:layout_width="wrap_content" android:layout_height="wrap_content">
        <TextView android:id="@+id/JobID" android:layout_column="1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="@color/black"></TextView>
        <TextView android:id="@+id/JobStatus" android:layout_column="2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="@color/black"></TextView>
        <TextView android:id="@+id/Customer" android:layout_column="3" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="@color/black"></TextView>
        <TextView android:id="@+id/Department" android:layout_column="4" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="@color/black"></TextView>
        <TextView android:id="@+id/DocType" android:layout_column="5" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="@color/black"></TextView>
    </TableRow> 
</TableLayout>
和活动
package com.producermobile;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TableLayout;
import com.producermobile.jobs.ProducerJobRows;
public class JobRowsActivity extends Activity { 
    private BatchingJobRows jobRows;    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.jobs_table);
        jobRows = new BatchingJobRows(this);        
    }
}
现在的想法是,当我创建 jobRows 时,表的数据将由 BatchingJobRows 对象加载,希望该对象随后可用于我的活动。不过,我没有办法在 mo 上检查这一点,所以我不确定这个概念是否正确(我主要担心的是 while 循环正在向表中添加行)。
无论如何,这是 BatchingJobRows 中发生的事情的简化版本。
package com.producermobile.jobs;
import java.util.ArrayList;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
import com.producermobile.R;
public class BatchingJobRows  {
    private TableLayout table;
    private View tableView;
    private Context context;
    private HashMap<String,ArrayList<String>> jobs; 
    private ArrayList<String> jobsVals;
    public BatchingJobRows(Context context) {
        this.context = context;
        LayoutInflater inflater = (LayoutInflater) 
            context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        tableView = inflater.inflate(R.layout.jobs_table, null);
        table = (TableLayout) tableView.findViewById(R.id.Jobs);
        jobVals = new ArrayList<String>();
        jobVals.add("HELD");
        jobVals.add("DELL");
        jobVals.add("PRINT");
        jobVals.add("STATEMENT");
        jobs = new HashMap<String,ArrayList<String>>();
        jobs.put("012345",jobVals);
        jobs.put("123456",jobVals);
        this.setRows();
    }
    public void setRows() {
        Iterator<String> keys = jobs.keySet().iterator();
        while(keys.hasNext()) {
            //Init Objects
            TableRow row = (TableRow) TableView.findViewById(R.id.JobRow);
            TextView jobid = (TextView) tableView.findViewById(R.id.JobID);
            TextView jobstatus = (TextView) tableView.findViewById(R.id.JobStatus);
            TextView customer = (TextView) tableView.findViewById(R.id.Customer);
            TextView department = (TextView) tableView.findViewById(R.id.Department);
            TextView doctype = (TextView) tableView.findViewById(R.id.DocType);
            String key = keys.next();
            jobid.setText(key);
            jobstatus.setText(jobs.get(key).get(0));
            customer.setText(jobs.get(key).get(1));
            department.setText(jobs.get(key).get(2));
            doctype.setText(jobs.get(key).get(3));
            row.addView(jobid);
            row.addView(jobstatus);
            row.addView(customer);
            row.addView(department);
            row.addView(doctype);
            table.addView(row);
        }
    }
}