0

我必须显示一个表格,当用户将焦点移动到上一行的最后一个 editText 时,会在其中添加行。我的第一种方法是创建 2 个 XML 文件、一个 tableLayout 和一个 Tablerow。每当用户需要该行时,我都会用 Java 扩充 XML 文件。这种方法一切正常,除了我无法从我定义 tableRow XML 的 EditText 中获取用户输入的值。我应该怎么办。我正在尝试的第二种方法的代码如下:

  public class PurchaseVoucher extends Activity implements OnFocusChangeListener{

AutoCompleteTextView item[]=new AutoCompleteTextView[30];
EditText quant[]=new EditText[30];
EditText rate[]=new EditText[30];
TableLayout main;
TableRow row[]=new TableRow[30];
EditText date;
boolean done;
Button save;
int no=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.sale_purchase_vouch);
    main=(TableLayout)findViewById(R.id.tableLayout);

    date=(EditText)findViewById(R.id.Date);
    date.setOnFocusChangeListener(this);
    done=false;
    save=(Button)findViewById(R.id.Save);
    save.setText("Confirm Purchase");

}
@Override
public void onFocusChange(View arg0, boolean arg1) {
    // TODO Auto-generated method stub
    switch(arg0.getId()){

    case R.id.Date:
    if(arg1==false || done==false){
        row[no]=(TableRow)LayoutInflater.from(this).inflate(R.layout.row, null);
    item[no]=new AutoCompleteTextView(this);
    quant[no]=new EditText(this);
    rate[no]=new EditText(this);
    LayoutParams params=new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);

    item[no].setHint("Enter item");
    quant[no].setHint("Quantity");
    rate[no].setHint("Rate");

    row[no].addView(item[no], params);
    row[no].addView(quant[no], params);
    row[no].addView(rate[no], params);
    main.addView(row[no]);
    no++;
    }
    break;
    }
}

}

通过这种方法,当用户从“日期”EditText 失去焦点时,editTexts 不会出现。

4

2 回答 2

0

这只是示例。

 TableLayout tl = (TableLayout)findViewById(R.id.tl_frmXML);

TableRow tr ;

for(int i=0;i<=10;i++){

tr = new TableRow(this);
TextView tv = new TextView(this);

tv.setText("Test "+i);
tr.addView(tv);
tl.addView(tr);
}
于 2013-08-06T11:22:46.850 回答
0

见以下代码

for (int i = 0; i < Counter; i++) {
        // Inflate your row "template" and fill out the fields.
        TableRow row = (TableRow) LayoutInflater.from(mContext).inflate(R.layout.row_table_layout, null);
        ((ImageView) row.findViewById(R.id.img_drink_place)).setImageResource(R.drawable.img_guest_container);
        ((TextView) row.findViewById(R.id.attendee_name)).setText(bookingList.Attendees.get(i).ConsumerName);


        ((TextView) row.findViewById(R.id.tv_multiple)).setText("x");
        ((TextView) row.findViewById(R.id.tv_attendee_quantity)).setText("" + bookingList.Attendees.get(i).Quantity);


        main.addView(row);
    }
于 2013-08-06T11:25:18.910 回答