1

3つのeditTextを含むlinearLayoutを別のlinearLayoutに膨らませる必要があります。linearLayout[] 配列を使用して実行できますか。

public class PurchaseVoucher extends Activity implements OnFocusChangeListener, OnClickListener{

LinearLayout[] row=new LinearLayout[30];
AutoCompleteTextView[] items=new AutoCompleteTextView[30];
EditText[] quants=new EditText[30];
EditText[] rates=new EditText[30];
TextView[] totals=new TextView[30];
Boolean[] flag=new Boolean[30];
EditText date;
Button save;
LinearLayout container;
int no;
int id;


@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.sale_purchase_vouch);
    no=0;
    for(int i=0;i<30;i++)
        flag[i]=true;

    save=(Button)findViewById(R.id.Save);
    save.setText("Confirm Purchase");
    LayoutInflater l=getLayoutInflater();
    container=(LinearLayout)findViewById(R.id.container);
    row[no]=(LinearLayout)l.inflate(R.layout.row, container);
    items[no]=(AutoCompleteTextView)row[no].findViewById(R.id.item);
    quants[no]=(EditText)row[no].findViewById(R.id.quant);
    rates[no]=(EditText)row[no].findViewById(R.id.rate);
    save.setOnClickListener(this);
    quants[no].setOnFocusChangeListener(this);
    flag[no]=false;


}


@Override
public void onFocusChange(View arg0, boolean arg1) {
    // TODO Auto-generated method stub
    if(flag[no+1]==true){

        if(arg1==false){
            no++;
    LayoutInflater g=getLayoutInflater();

    row[no]=(LinearLayout)g.inflate(R.layout.row, container);
    items[no]=(AutoCompleteTextView)row[no].findViewById(R.id.item);
    quants[no]=(EditText)row[no].findViewById(R.id.quant);
    rates[no]=(EditText)row[no].findViewById(R.id.rate);
    Log.d("detection", "Row is "+ no+ arg0.getId());
        }
    }
}


@Override
public void onClick(View arg0) {
    // TODO Auto-generated method stub
    Log.d("quant", quants[0].getText().toString()+" "+quants[0].getText().toString());
    Log.d("item", items[1].getText().toString()+" "+quants[1].getText().toString());
    Log.d("rate", rates[2].getText().toString()+" "+quants[2].getText().toString());

}

}

ボタンを押して logcat で結果を取得すると、すべての値が最初の 3 つの editTexts、つまり items[0]、quants[0]、rates[0] に等しくなります。次に、onFocusChangeListener() は、定義済みの最初の linearLayout に存在する editText に対してのみ機能します。

4

1 に答える 1