我必須顯示一個表格,當用戶將焦點移動到上一行的最後一個editText時,會添加行。我的第一個方法是我創建了2個XML文件,一個tableLayout和一個Tablerow。無論何時用戶需要該行,我都會用Java擴充XML文件。除了我無法從我定義tableRow XML的EditText獲取用戶輸入的值之外,一切正常。我該怎麼辦。對此,我想第二個方法的代碼如下:如何動態添加行到tableLyout?
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;
}
}
}
通過這種方法editTexts沒有出現在用戶失去焦點從「日期」的EditText。