0

私はすでに質問しました(http://stackoverflow.com/questions/12663443/add-delete-option-with-dynamically-generated-edittext)。私は答えをうまく実装しましたが、このコードの問題はtextEdit、スピナー、および削除ボタンが一緒になってビューから削除されないことです。それは起こりますが、これを行うには3つのボタンをクリックする必要があります..私のコードを調べてください。

 btnAddNew.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {

            LinearLayout rAlign = (LinearLayout)findViewById(R.id.lId);
            final EditText newPass = new EditText(getApplicationContext());
            allEds.add(newPass);
            newPass.setHint("Name of Label");
            newPass.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
            //newPass.setWidth(318);
            newPass.setTextColor(Color.parseColor("#333333"));
            newPass.setId(MY_BUTTON);
             System.out.println(MY_BUTTON);  
            //newPass.setOnClickListener(this);
            rAlign.addView(newPass);

            addSpinner();//Code to add spinner              
            Button btnRemoveOld = new Button(getApplicationContext());
            btnRemoveOld.setId(MY_BUTTON); // arbitrary number
            rAlign.addView(btnRemoveOld);
            btnRemoveOld.setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
                    int idf =MY_BUTTON -1;
                    LinearLayout rAlign = (LinearLayout)findViewById(R.id.lId);
                    rAlign.removeView(findViewById(idf));
                  allEds.remove(newPass);

                }
            }); 
           MY_BUTTON ++;
        } 
    });
4

1 に答える 1

0

MY_BUTTON を使用して各ビューに ID を割り当てる場合

newPass.setId(MY_BUTTON); 
MY_BUTTON++;
spinner.setId(MY_BUTTON);
MY_BUTTON++;
btnRemoveOld.setId(MY_BUTTON);
MY_BUTTON++;

btnRemoveOld の onClickListner でこれを実行して、3 つのオブジェクトすべてを削除できます。

btnRemoveOld.setOnClickListener(new OnClickListener() {
              public void onClick(View v) {
                  //gets the ID of the btnRemoveOld;
                  int idf =v.getId();
                  LinearLayout rAlign = (LinearLayout)findViewById(R.id.lId);
                  //will return the newPass button
                  rAlign.removeView(findViewById(idf-2));
                  //will return the spinner
                  rAlign.removeView(findViewById(idf-1));
                  //will remove the btnRemoveOld
                  rAlign.removeView(v);
                    }
          });

v.getId() を実行すると、btnRemoveOld の id 値が取得され、コードから、スピナーが id-1 であり、newPass ボタンが id-2 であることを確認できます。

于 2012-10-01T14:52:22.003 に答える