3つの編集テキストの行を動的に作成し、それらをリスト内に配置して、それらの値で「遊ぶ」ことができるアプリを持っています。たとえば、最初の行で価格を呼び出したい場合は、pret [0]を実行します。簡単に言うと、商品名、数量、価格の欄がある買い物リストのようなものです。テキストがいつ変更されたかを検出するように既に設定しています(テキストウォッチャー)。これにより、合計がリアルタイムで計算されるため、人々がいつ編集テキストに書いているかがわかりますが、最後にいつ入力しているかはわかりません編集テキストの行。
私が今欲しいのはこれです:最後の行がクリックされた/フォーカスされた/テキストが入力されたときにprodusnou()を呼び出し、Edittextsの新しい行を自動的に作成します。私が言ったように、私の問題は、彼らが入力しているとき、クリックしているとき、または最後の行に焦点を合わせているときを検出する方法がわからないことです. これは、editext の新しい行を作成する方法です。
public void produsnou() {
LinearLayout l1 = (LinearLayout) findViewById(R.id.layout1);
EditText et = new EditText(this);
et.setHint("Produs");
l1.addView(et);
et.addTextChangedListener(this);
et.setId(997);
LinearLayout l2 = (LinearLayout) findViewById(R.id.layout2);
EditText et2 = new EditText(this);
et2.setHint("Cantitate");
et2.setInputType(InputType.TYPE_CLASS_NUMBER
| InputType.TYPE_NUMBER_FLAG_DECIMAL);
et2.setId(998);
allcant.add(et2);
l2.addView(et2);
et2.addTextChangedListener(this);
LinearLayout l3 = (LinearLayout) findViewById(R.id.layout3);
EditText et3 = new EditText(this);
et3.setHint("Pret");
et3.setInputType(InputType.TYPE_CLASS_NUMBER
| InputType.TYPE_NUMBER_FLAG_DECIMAL);
l3.addView(et3);
et3.setId(999);
allpret.add(et3);
et3.addTextChangedListener(this);
}
私はこれをしましたが、うまくいきません:
public void onFocusChange(View view, boolean hasFocus) {
LinearLayout l3 = (LinearLayout) findViewById(R.id.layout3);
if (hasFocus &&
l3.getChildAt(l3.getChildCount() ) == view) {
produsnou();
}
}