2013-08-06 2 views
0

사용자가 포커스를 이전 행의 마지막 editText로 이동할 때 행이 추가되는 테이블을 표시해야합니다. 첫 번째 방법은 2 개의 XML 파일 인 tableLayout과 하나의 Tablerow를 만들었다는 것입니다. 사용자가 행을 필요로 할 때마다 Java에서 XML 파일을 부 풀리게됩니다. tableRow XML을 정의한 EditText에서 사용자가 입력 한 값을 선택할 수 없다는 점을 제외하고는이 방법으로 모두 잘 작동합니다. 어떻게해야합니까? 내가 노력하고 두 번째 방법에 대한 코드는 다음과 같습니다 다음 editTexts는 사용자로 표시되지 않는이 방법으로동적으로 테이블을 행에 추가하는 방법은?

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

}

은 '날짜'글고 포커스를 잃게됩니다.

답변

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