0

我有一个简单的表格布局,我想通过在我的 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);
        }
    }
}
4

1 回答 1

2

好吧,这不是您问题的直接答案,但我认为您应该做的是创建一个列表活动,并将此功能向下移动到某种类型的 ListAdapter 中。我们可以帮助您解决有关如何设置的问题。它可能比你要走的路线更容易,而且这个板上的人更熟悉。所以我建议在这方面采取传统的方法。根据您的需要使用 ListActivity 和 ListAdapter Base 或 Cursor。

于 2011-03-08T22:42:02.193 回答