2013-08-06 70 views
0

我必須顯示一個表格,當用戶將焦點移動到上一行的最後一個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。

回答

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); 
} 
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); 
    }