我必须显示一个表格,当用户将焦点移动到上一行的最后一个 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 不会出现。